Saya telah membaca tentang percabangan / penggabungan dengan Subversion 1.5 menggunakan Kontrol Versi yang sangat baik dan gratis dengan buku Subversion . Saya pikir saya mengerti bagaimana menggunakan klien baris perintah Subversion untuk melakukan tindakan yang paling saya butuhkan, yaitu:
Perbarui Cabang dengan Perubahan dari Batang
Dari jalankan direktori kerja cabang:
svn menggabungkan http://svn.myurl.com/proj/trunk
Gabungkan Cabang menjadi Batang
Dari jalankan direktori kerja trunk:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
Namun, kami menggunakan TortoiseSVN 1.5 sebagai antarmuka kami untuk Subversion. Saya ingin tahu cara terbaik untuk melakukan operasi ini dengan TortoiseSVN. Dialog baru menyediakan tiga opsi berbeda pada menu utama.
- Gabungkan berbagai revisi
- Reintegrasikan cabang
- Gabungkan dua pohon yang berbeda
Dari apa yang saya dapat kumpulkan, TortoiseSVN selalu mengeksekusi svn dengan sintaks berikut.
svn merge [--dry-run] - memaksa From_URL @ revN To_URL @ revM PATH
Selain itu, mengintegrasikan kembali cabang sering gagal dengan pesan yang menyatakan bahwa beberapa target belum digabungkan sehingga tidak dapat melanjutkan, dan jadi saya harus menggunakan opsi # 3.
Pertanyaan saya adalah:
- Bagaimana cara menggunakan TortoiseSVN 1.5 untuk menggabungkan perubahan dari trunk ke cabang?
- Bagaimana cara menggunakan TortoiseSVN 1.5 untuk menggabungkan cabang ke trunk, dengan dan tanpa metode reintegrate?
- Manakah dari opsi di atas yang harus saya gunakan untuk masing-masing, dan mengapa?
EDIT
Melalui pengujian "dry run" saya telah menemukan bahwa operasi perintah baris Subversion
svn menggabungkan http://svn.myurl.com/proj/trunk
analog dengan opsi # 1 (Gabungkan Berbagai Revisi) di TortoiseSVN, selama saya membiarkan rentang revisi kosong.
sumber
Jawaban:
Perilaku ini tergantung pada versi repositori Anda. Subversion 1.5 memungkinkan 4 jenis penggabungan:
Subversi sebelum 1,5 hanya memungkinkan 2 format pertama.
Secara teknis Anda dapat melakukan semua penggabungan dengan dua metode pertama, tetapi dua penggabungan terakhir memungkinkan pelacakan penggabungan subversion 1.5.
Opsi TortoiseSVN menggabungkan rentang atau revisi peta ke metode 3 saat repositori Anda berumur 1,5+ atau ke metode satu saat repositori Anda lebih tua.
Saat menggabungkan fitur ke cabang rilis / pemeliharaan, Anda harus menggunakan perintah 'Gabungkan berbagai revisi'.
Hanya ketika Anda ingin menggabungkan semua fitur cabang kembali ke cabang induk (biasanya trunk) Anda harus melihat menggunakan 'Reintegrate a branch'.
Dan perintah terakhir -Merge dua pohon yang berbeda- hanya berguna ketika Anda ingin melangkah keluar dari perilaku percabangan normal. (Misalnya, Membandingkan rilis yang berbeda dan kemudian menggabungkan perbedaan ke cabang lain)
sumber
Saya tidak bisa mengikuti jawaban lain dengan benar, berikut ini lebih banyak panduan boneka ...
Anda dapat melakukan ini dengan cara apa pun untuk pergi
trunk -> branch
ataubranch -> trunk
. Saya selalutrunk -> branch
memperbaiki konflik di sana dan kemudian bergabungbranch -> trunk
.Gabungkan trunk menjadi cabang / tag
sumber
trunk
danbranch
, maka pastikan bahwa Anda menggabungkan perubahan daritrunk
menjadibranch
sesegera mungkin akan menghindari konflik sebanyak mungkin. Ini berarti bahwa ketika Anda bergabungbranch
ketrunk
sana seharusnya tidak ada konflik.Anda harus menggunakan "gabungkan berbagai revisi".
Untuk menggabungkan perubahan dari trunk ke cabang, di dalam copy pekerjaan cabang pilih "gabungkan rentang revisi" dan masukkan URL trunk dan revisi awal dan akhir untuk digabung.
Hal yang sama dengan cara yang berlawanan untuk menggabungkan cabang di bagasi.
Tentang flag --reintegrate, periksa manualnya di sini: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
sumber
Lihatlah svnmerge.py . Ini adalah command-line, tidak dapat dipanggil oleh TortoiseSVN, tetapi lebih kuat. Dari FAQ :
sumber
Shift-Klik kanan pada folder dan pilih TortoiseSVN -> Gabungkan Semua
sumber