Jawaban:
Percabangan di Subversion difasilitasi oleh fasilitas penyalinan yang sangat sangat ringan dan efisien.
Percabangan dan penandaan secara efektif sama. Cukup salin seluruh folder di repositori ke tempat lain di repositori menggunakan svn copy
perintah.
Pada dasarnya ini berarti bahwa dengan konvensi apa artinya menyalin folder - apakah itu cadangan, tag, cabang atau apa pun. Bergantung pada bagaimana Anda ingin memikirkan hal-hal (biasanya tergantung pada alat SCM mana yang telah Anda gunakan di masa lalu), Anda perlu mengatur struktur folder dalam repositori Anda untuk mendukung gaya Anda.
Gaya umum adalah untuk memiliki sekelompok folder di bagian atas repositori Anda disebut tags
, branches
, trunk
, dll - yang memungkinkan Anda untuk menyalin Anda seluruh trunk
(atau sub-set) ke dalam tags
dan / atau branches
folder. Jika Anda memiliki lebih dari satu proyek, Anda mungkin ingin meniru struktur semacam ini di bawah setiap proyek:
Mungkin perlu waktu untuk membiasakan diri dengan konsep - tetapi berhasil - pastikan Anda (dan tim Anda) sudah jelas tentang konvensi yang akan Anda gunakan. Ini juga merupakan ide yang baik untuk memiliki konvensi penamaan yang baik - sesuatu yang memberi tahu Anda mengapa cabang / tag dibuat dan apakah itu masih sesuai - pertimbangkan cara pengarsipan cabang yang sudah usang.
svn cp
menggunakan salinan murah, itu tidak menyalin file yang sebenarnya selama percabangan. Lihat svnbook.red-bean.com/en/1.1/ch04s02.html
Buat cabang baru menggunakan svn copy
perintah sebagai berikut:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(jika Anda ingin mengganti checkout saat ini ke cabang baru) atau svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(jika Anda ingin memiliki cabang baru di direktori terpisah) untuk mulai bekerja pada cabang yang baru dibuat.
--parents
opsi dengansvn copy
!
-m
opsi, ia mengatakan seperti svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
. Dengan -m
itu dikatakan svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (Saya mengganti alamat, tetapi mereka memang ada, kecuali, ofc, direktori cabang baru, dan seluruh path + url yang SVN karena beberapa alasan digabungkan dalam kesalahan) .
svn cp /trunk/ /branch/NEW_Branch
Jika Anda memiliki beberapa perubahan lokal di trunk kemudian gunakan Rsync
untuk menyinkronkan perubahan
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
cara ini. svn cp
juga akan menyalin perubahan lokal apa pun.
Misalkan Anda ingin membuat cabang dari nama trunk (sebagai "TEST") kemudian gunakan:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Biasanya Anda akan menyalinnya ke svn + ssh: //host.example.com/repos/project/branches/mybranch sehingga Anda dapat menyimpan beberapa cabang di repositori, tetapi sintaksis Anda valid.
Berikut ini beberapa saran tentang cara mengatur tata letak repositori Anda .
Tip teratas untuk pengguna SVN baru; ini mungkin membantu sedikit dengan mendapatkan URL yang benar dengan cepat.
Jalankan svn info
untuk menampilkan informasi yang berguna tentang cabang yang saat ini ditutup.
URL seharusnya (jika Anda menjalankan svn di folder root) memberi Anda URL yang harus Anda salin.
Juga untuk beralih ke cabang yang baru dibuat, gunakan svn switch
perintah:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Jika Anda bahkan berencana untuk menggabungkan cabang Anda, saya sangat menyarankan Anda melihat ini:
Saya mendengar Subversion 1.5 membangun lebih banyak pelacakan gabungan, saya tidak punya pengalaman dengan itu. Proyek saya ada di 1.4.x dan svnmerge.py adalah penyelamat hidup!
Di bawah ini adalah langkah-langkah untuk membuat cabang dari trunk menggunakan TortoiseSVN di mesin windows. Ini jelas membutuhkan klien TortoiseSVN untuk diinstal.