Apa cara terbaik untuk membuat salah satu cabang dari repositori subversi menjadi trunk baru?
Telah ada penulisan ulang utama untuk keseluruhan sistem: banyak hal telah dipindahkan, ditulis ulang, diganti, dihapus, diganti dll. Kode yang ditulis ulang telah diuji dan siap untuk mengganti trunk yang lama.
Pada dasarnya, jalur utama lama (Batang 5) ditandai dan akan berakhir di sini. Cabang yang ditulis ulang (Cabang 6) akan menjadi arus utama baru (Batang 7):
Batang (1) -> Batang (2) -> Batang (5) -> × + -> Batang baru (7) \ \ | garpu bergabung ??? \ \ | + -> Cabang (3) -> Cabang (4) -> Cabang (6) - +
Semua perubahan yang sedang berlangsung dari 'Bagasi' lama sudah dimasukkan dalam 'Cabang ditulis ulang'
Bagaimana saya bisa melakukan ini?
sumber
Saya setuju dengan menggunakan perintah svn move untuk mencapai tujuan ini.
Saya tahu orang lain di sini berpikir itu tidak biasa, tetapi saya suka melakukannya dengan cara ini. Ketika saya memiliki cabang fitur dan siap untuk menggabungkannya dengan trunk yang juga telah dimodifikasi secara signifikan, saya akan menggabungkannya ke cabang baru, biasanya dinamai
<FeatureBranchName>-Merged
. Lalu saya menyelesaikan konflik dan menguji kode gabungan. Setelah selesai, saya memindahkan trunk ke folder tag sehingga saya tidak kehilangan apa-apa. Terakhir saya memindahkan<FeatureBranchName>-Merged
ke bagasi.Selain itu saya lebih suka menghindari copy pekerjaan ketika melakukan gerakan, berikut adalah contoh dari perintah:
Catatan: Saya menggunakan 1,5
sumber
Saya hanya melihat masalah ini baru-baru ini, dan solusi yang saya sangat senang melakukannya
svn menggabungkan --ignore-keturunan trunk-url branch-url
pada copy pekerjaan bagasi saya.
Ini tidak mencoba menerapkan perubahan secara historis (mempertahankan perubahan di bagasi). Ini hanya "menerapkan diff" antara trunk dan cabang. Ini tidak akan membuat konflik bagi pengguna Anda di file yang tidak dimodifikasi. Namun Anda akan kehilangan informasi Historis Anda dari cabang, tetapi itu terjadi ketika Anda tetap menggabungkan.
sumber
Rekomendasikan Anda melakukan perubahan ini melalui alat browser repositori.
Mencoba operasi delete + move besar melalui copy pekerjaan adalah cara yang bagus untuk membunuh copy pekerjaan. Jika Anda dipaksa untuk menggunakan copy pekerjaan, lakukan komit tambahan setelah setiap operasi hapus atau pindahkan dan Perbarui copy pekerjaan Anda setelah setiap komit.
sumber
Jika Anda ingin menjadikan cabang sebagai trunk baru (yaitu) singkirkan semua perubahan pada trunk yang dibuat sejak cabang dibuat, Anda bisa 1. Membuat cabang trunk (untuk keperluan cadangan) 2. "mengembalikan perubahan "pada trunk (pilih semua revisi setelah cabang dibuat 3. Gabungkan cabang kembali ke trunk.
Sejarah harus tetap seperti ini.
Salam, Roger
sumber
Solusi @Aaron Digulla dan @kementeus bisa diterapkan. Untuk repositori Subversion 1.4, operasi penyalinan / pemindahan dapat membuat migrasi di masa mendatang ke struktur repositori berbeda atau memisahkan repositori.
Saya percaya peningkatan 1.5 termasuk resolusi yang lebih baik dari memindahkan / menyalin riwayat, jadi itu mungkin tidak akan menjadi masalah untuk repositori 1.5.
Untuk repositori 1.4, saya akan merekomendasikan menggunakan
svnadmin dump
dansvndumpfilter
untuk melakukan pergerakan trunk yang ada di tempat lain, kemudian memindahkan cabang ke trunk dengan mekanisme yang sama. Muat kedua dumpfiles ke repositori pengujian, verifikasi, lalu pindahkan ke produksi.Tentu saja, buat cadangan repositori Anda yang sudah ada sebelum memulai.
Ini menjaga sejarah tanpa merekam gerakan / salinan secara eksplisit dan membuat pengorganisasian kembali di masa depan, menjaga sejarah, lebih mudah.
Sunting: Seperti yang diminta, dokumentasi perilaku 1.4, dari buku 1.4 Red-Bean, Filtering Repository History
Ini berlaku untuk migrasi / reorganisasi yang menggunakan
svndumpfilter
. Ada saat-saat ketika sedikit pekerjaan ekstra sekarang dapat menghemat banyak pekerjaan tambahan nanti, dan dengan menjaga penggunaan yang mudahsvndumpfilter
tersedia untuk migrasi / reorganisasi masa depan mengurangi risiko dengan biaya yang relatif rendah.sumber
Sementara jawaban di atas akan berfungsi, mereka bukan praktik terbaik. Server svn terbaru dan jalur klien bergabung untuk Anda. Jadi svn tahu revisi mana yang telah Anda gabungkan menjadi cabang dan dari mana. Ini sangat membantu ketika menjaga agar cabang tetap mutakhir dan kemudian menggabungkannya kembali ke bagasi.
Bagaimanapun versi Subversion yang Anda gunakan, ada metode praktik terbaik untuk mendapatkan perubahan di cabang kembali ke bagasi. Itu diuraikan dalam manual Subversion: Kontrol Versi dengan Subversion, Bab 4. Branching and Merging, Keeping a Branch in Sync .
sumber
Ini adalah konfigurasi yang sangat aneh / tidak biasa di SVN, bahkan saya pikir ini jauh dari "praktik yang baik" sama sekali, saya kira Anda dapat melakukan sesuatu seperti:
Semoga berhasil
sumber