Gabungkan cabang dengan batang


119

Menggunakan TortoiseSVN, saya perlu mengambil perubahan yang telah saya lakukan di cabang dan kemudian menggabungkannya dengan trunk.

Saya satu-satunya pengembang di proyek ini, jadi saya tahu trunk tidak berubah. Saya sedang mempelajari SVN sehingga pada akhirnya tim saya dapat menggunakannya.

Pada dasarnya, saya ingin bagasi saya terlihat persis seperti cabang.

Di dunia pra-svn, saya hanya akan menyalin file di folder cabang saya, menghapus file di folder trunk, dan kemudian menyalin cabang ke trunk.

Dalam TortoiseSVN, saya sudah mencoba Reintegrate a branch, Merge a range of revisionsdan Merge two different trees. Sepertinya tidak ada yang benar-benar mengubah bagasi. Saya juga mencoba bercabang di atas batang. Ini memberi saya kesalahan, mengatakan bahwa bagasi sudah ada.

Jawaban:


157

Dalam kasus Anda:

  1. Alihkan copy pekerjaan ke bagasi (SVN Switch)
  2. Gabungkan cabang ke dalam copy pekerjaan (SVN Merge)
  3. Pastikan semuanya masih terkompilasi dan berfungsi
  4. Komit copy pekerjaan (bagasi)
  5. Pertimbangkan untuk membunuh cabangnya

Dalam lingkungan tim, saya menyarankan Anda untuk menggabungkan modifikasi terbaru dari trunk di cabang Anda, pastikan bahwa semuanya terkompilasi dan berfungsi, kemudian lakukan langkah-langkah di atas (yang akan sepele karena Anda telah menguji perubahan).


Memperbarui

Pada langkah 5, saya menyebutkan membunuh cabang. Itu karena begitu cabang dari kenampakan medan di batang, itu harus dianggap sebagai bagian dari batang. Dalam hal ini, cabang harus dimatikan agar tidak ada yang terus mengerjakannya. Jika modifikasi besar diperlukan untuk fitur itu, Anda harus membuat cabang baru untuk itu.

Satu-satunya cabang yang tidak saya matikan adalah cabang pemeliharaan dan rilis, kecuali jika rilis tertentu tidak lagi didukung.

Apa pun yang terjadi, Anda selalu memiliki akses ke setiap revisi sehingga membunuh cabang hanya digunakan untuk mencegah pengembang lain berkembang di cabang mati.


Komentar yang Anda tambahkan pada langkah 5 mungkin lebih baik menjadi langkah 1? Saat Anda ingin menggunakan "Integrasikan kembali cabang" dari dialog Gabung TortoiseSVN, menggabungkan semua perubahan dari batang (atau cabang dasar) terlebih dahulu adalah sebuah persyaratan.
jbvo

1
Apakah langkah pertama (alihkan copy pekerjaan ke trunk) hanya diperlukan jika tidak memiliki copy pekerjaan cabang dan trunk yang terpisah?
Jeff B

1
Saya pikir bagian utama dari detail yang hilang di sini adalah folder yang Anda klik untuk setiap langkah, sehingga Anda tahu konteks setiap langkah.
MacGyver

10

Saya pikir di TortoiseSVN 1.8.5, Gabung | Gabungkan dua pohon berbeda seharusnya berhasil. Saat Anda menggabungkan cabang / tag kembali ke trunk, triknya adalah URL Dari adalah trunk dan To adalah tag / cabang. Aneh tapi benar.

Sumber: Penggabungan

Untuk direktori yang tidak ada dalam copy pekerjaan Anda tetapi berada di tag / cabang Anda mungkin mendapatkan kesalahan konflik. Terima saja konflik dan ulangi penggabungan.


Setelah Anda mengikuti petunjuk di situs tortoisesvn, pastikan setelah penggabungan, Anda memasukkan trunk tanpa mengubah apa pun. Saya mencoba menghapus centang beberapa hal yang tidak ingin saya lakukan yang menyebabkan beberapa peringatan commit non-rekursif. Juga, pertimbangkan untuk menghapus cabang seperti instruksi yang tertulis.
goku_da_master

6

Pertama, alihkan copy pekerjaan Anda ke bagasi. Kemudian lakukan revisi merge range, dari cabang ke trunk. Setelah dialog ini selesai, perbedaannya akan menunggu perubahan pada copy pekerjaan trunk Anda. Anda harus mengkomitnya seperti jika Anda secara manual membuat perubahan pada copy pekerjaan Anda.

Dalam penggunaan saya, ini lebih khas untuk menjaga batang tetap berjalan dan memintal cabang pada saat pembangunan. Jadi satu-satunya penggabungan yang perlu saya lakukan adalah memperbaiki bug dari trunk dan meletakkannya di cabang build terbaru dan merilis ulang cabang itu. Cara termudah bagi saya untuk melakukan ini, karena seperti yang Anda temukan, penggabungan adalah yang terbaik. Adalah untuk menyimpan cabang terbaru dan bagasi diperiksa ke mesin saya, dan secara harfiah menyalin file dari batang ke cabang dan memeriksa keduanya.


2
Banyak kehati-hatian harus dilakukan dengan "menyalin" file. Gunakan sesuatu seperti ekspor TortoiseSVN untuk menghindari kerusakan direktori svn yang tersembunyi.
Milimetri

3

Saya menggunakan TortoiseSVN 1.9.3, Build 27038.

Ikuti langkah-langkah di bawah ini untuk menggabungkan cabang menjadi trunk.

1) Klik kanan pada trunk working copy dan pilih opsi di bawah ini.

masukkan deskripsi gambar di sini

2) Jika Branch Merging ke trunk pilih opsi kedua seperti yang ditunjukkan di bawah ini dan klik next

masukkan deskripsi gambar di sini

3) Di kolom From: masukkan URL folder lengkap dari bagasi. Ini mungkin terdengar salah, tapi ingat bahwa trunk adalah titik awal yang ingin Anda tambahi perubahan cabang. Di kolom To: masukkan URL folder lengkap dari cabang fitur.

masukkan deskripsi gambar di sini

4) Klik next dan lakukan test merge

masukkan deskripsi gambar di sini

5) Jika uji penggabungan berhasil, klik tombol Gabung.

6) Setelah penggabungan berhasil, lakukan perubahan pada trunk.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.