Ada banyak program di luar sana yang dapat membuat tambalan berbeda, tetapi saya memiliki waktu yang sangat lama untuk mencoba menerapkannya. Saya mencoba mendistribusikan tambalan, dan saya mendapat pertanyaan dari pengguna tentang bagaimana menerapkannya. Jadi saya mencoba mencari tahu sendiri dan menemukan bahwa saya tidak tahu, dan sebagian besar alat yang dapat saya temukan adalah baris perintah. (Saya dapat menangani baris perintah, tetapi banyak orang akan tersesat tanpa GUI yang bagus dan ramah. Jadi itu tidak baik untuk tujuan ini.)
Saya mencoba menggunakan TortoiseSVN. Saya memiliki tambalan yang ingin saya terapkan. Saya mengklik kanan pada tambalan, dan ada opsi di bawah submenu TortoiseSVN yang mengatakan "Terapkan tambalan." Yang dilakukannya hanyalah menarik jendela kosong.
Jadi saya mencoba menekan Buka. Ini memiliki dua opsi: gabungkan dan terapkan diff terpadu. (Untungnya, tambalan dalam format diff terpadu.) Tetapi opsi terapkan tidak berfungsi: Opsi ini meminta tambalan dan folder. Entah bagaimana itu lupa meminta file untuk menerapkan tambalan! Jadi TortoiseSVN tidak bekerja. Apakah ada utilitas berbasis GUI Windows yang akan mengambil patch dan file dan menerapkannya dengan benar?
EDIT: Melihat balasan sejauh ini, tampaknya Tortoise hanya akan melakukannya dengan benar jika itu adalah file yang sudah berversi. Bukan itu masalahnya di sini. Saya harus bisa menerapkan tambalan ke file yang tidak keluar dari repositori SVN. Saya baru saja mencoba menggunakan Tortoise, karena saya kebetulan tahu bahwa SVN menggunakan diff dan harus tahu bagaimana keduanya membuat dan menerapkannya.
Jawaban:
Terapkan Patch
Dengan TortoiseMerge:
Layar alternatif jika Anda Buka dari TortoiseMerge. Pada layar di bawah ini, direktori mengacu pada direktori "penggabungan" yang disebutkan pada langkah 2 di atas:
Tangkapan layar dari GUI WinMerge:
sumber
Saya membuat alat Python murni hanya untuk itu. Ini memiliki perilaku lintas platform yang dapat diprediksi. Meskipun tidak membuat file baru (pada saat penulisan ini) dan tidak memiliki GUI, ini dapat digunakan sebagai pustaka untuk membuat alat grafik.
PEMBARUAN : Seharusnya lebih nyaman menggunakannya jika Anda menginstal Python.
sumber
TortoiseMerge adalah utilitas terpisah yang dibundel dengan TortoiseSVN.
Itu juga bisa diunduh secara terpisah di arsip TortoiseDiff.zip . Ini akan memungkinkan Anda untuk menerapkan diff terpadu ke file non-berversi.
sumber
Saya tahu Anda mengatakan Anda lebih suka GUI, tetapi alat baris perintah akan bekerja dengan baik. Lihat GnuWin untuk port alat unix ke Windows. Anda akan membutuhkan perintah patch, jelas ;-)
Anda mungkin mengalami masalah dengan penghentian jalur. Port GnuWin akan menganggap bahwa patchfile memiliki terminasi baris gaya DOS (CR / LF). Cobalah untuk membuka patchfile di editor yang cukup pintar dan itu akan mengubahnya untuk Anda.
sumber
Utilitas patch.exe dari penginstalan Git berfungsi di Windows 10.
Instal Git untuk Windows lalu gunakan
"C:\Program Files\Git\usr\bin\patch.exe"
perintah untuk menerapkan tambalan.Jika ada pesan kesalahan seperti a
Hunk #1 FAILED at 1 (different line endings).
telah didapat pada output selama menerapkan tambalan, coba tambahkan-l
(yang merupakan pintasan untuk--ignore-whitespace
) atau--binary
sakelar ke baris perintah.sumber
Dalam TortoiseSVN, penerapan patch berhasil. Anda perlu menerapkan tambalan ke direktori yang sama saat tambalan itu dibuat . Hal ini selalu penting untuk diingat. Jadi, inilah cara Anda melakukannya di TortoiseSVN:
Klik kanan pada folder tempat Anda ingin menerapkan tambalan. Ini akan menampilkan dialog yang menanyakan lokasi file patch. Pilih file dan ini akan membuka jendela daftar file kecil yang mencantumkan file yang diubah, dan mengklik setiap item akan membuka jendela diff yang menunjukkan apa yang akan dilakukan patch terhadap file itu.
Semoga berhasil.
sumber
Anda dapat menggunakan port asli Win32 ini dari utilitas tambalan.
Itu datang bersama dengan pilihan yang lebih besar dari utilitas lain dan berbeda dengan Cygwin dan sejenisnya tidak memerlukan DLL atau serupa. Pilih saja pilihan kecil Anda yang dapat dieksekusi dan simpan di mana pun Anda inginkan.
Penggunaan sederhana:
Dapatkan lebih banyak bantuan:
sumber
patch.exe
.patch
. Windows menganggap semua mantan dengan katapatch
sebagai tersangka.Anda dapat menginstal Cygwin , kemudian menggunakan alat patch baris perintah untuk menerapkan patch. Lihat juga halaman manual Unix ini , yang berlaku untuk patch .
sumber
Tampaknya TortoiseSVN (TortoiseMerge) membutuhkan baris
Index: foobar.py
dalam file diff / patch. Inilah yang perlu saya lakukan untuk membuat file patch non-TortoiseSVN bekerja dengan perintah klik kanan Apply Patch TortoiseSVN .Sebelum:
Setelah:
Atau jika Anda tahu revisi spesifik kontributor Anda bekerja:
sumber
Saya menggunakan MSYS2 dari http://www.msys2.org/
Ini menyediakan banyak utilitas seperti
patch
,which
,git
,tree
, dan banyak lagi.Setelah menginstal MSYS2, jalankan pengelola paket untuk menginstal
patch
:sumber
Patch memberi tahu file apa yang akan diterapkan. Headernya harus seperti ini (lihat di Notepad atau editor teks favorit Anda):
Dalam kasus patch Subversion, Anda juga akan memiliki nomor revisi (karena nama file sama).
Patch GNU akan membiarkan Anda mengganti nama-nama itu, tetapi saya tidak tahu alat GUI untuk melakukan hal yang sama. Saya akan memeriksa dengan berbagai program diff - meskipun, tampaknya WinMerge tidak mendukung penerapan tambalan.
sumber
Eclipse harus bisa melakukannya, buka perspektif TeamSynchronize dan kemudian ke Project-> Apply patch
sumber
Untuk proyek Java, saya telah menggunakan NetBeans untuk menerapkan file patch. Jika kode Java yang Anda tambal belum menjadi proyek NetBeans, buatlah proyek untuk itu. Untuk membuat proyek baru:
Sekarang Anda memiliki sebuah proyek, terapkan tambalan:
Itu dia. Tambalan Anda harus diterapkan, dan Anda akan melihat jendela diff yang menunjukkan perubahan.
sumber
Saya sudah menggunakan BeyondCompare (komersial) untuk perbedaan dan penggabungan, dan alat ini juga memiliki kemampuan untuk membuat, melihat, dan menerapkan tambalan.
sumber
Jika Anda menggunakan Mercurial , ini dilakukan melalui "impor". Jadi di baris
hg import
perintah, perintah, atau (Anda mungkin menemukan file--no-commit
opsi yang berguna), atau "Repositori" => "Impor ..." di Hg Workbench.Perhatikan bahwa ini akan melakukan perubahan secara default; Anda dapat menghindari ini menggunakan
hg import --no-commit
opsi jika menggunakan baris perintah, atau jika Anda menggunakan Hg Workbench, Anda mungkin merasa berguna untuk mengeluarkannyahg rollback
setelah penggabungan.sumber
Saat menerapkan tambalan menggunakan TortoiseSVN, saya biasanya menyimpan jalur di root dari repositori yang diperiksa. Anda kemudian bisa mengklik kanan pada patch, pergi ke menu TortoiseSVN, dan klik ApplyPatch. ApplyPatch harus secara otomatis mencari tahu level mana dalam hierarki direktori tempat patch dibuat.
Namun, saya memiliki masalah di masa lalu dengan menerapkan patch yang berisi file baru, atau yang melibatkan penggantian nama ke file. Algoritma apa pun yang digunakan Tortoise untuk ini tampaknya tidak menangani skenario itu dengan baik. Unicode dapat memberi Anda masalah serupa.
sumber
Apakah Anda memiliki dua monitor? Saya mengalami masalah yang sama dengan TortoiseMerge dan saya menyadari bahwa ketika saya menonaktifkan salah satu monitor, jendela kecil dengan daftar file muncul. Semoga ini bisa membantu Anda.
sumber
Jika Anda mendapatkan pesan kesalahan "Bukan copy pekerjaan" maka coba pilih direktori dari kotak dialog TortoiseMerge yang merupakan direktori kerja SVN.
sumber
Sebuah BusyBox port untuk Windows memiliki kedua diff dan patch perintah, tetapi mereka hanya mendukung format bersatu.
sumber
Gunakan saja:
ingat jalankan perintah ini hanya dari lokasi folder tempat Anda membuat tambalan.
sumber