Saya mulai menggunakan SVN sekitar 9 bulan yang lalu dan ini merupakan game changer untuk sedikitnya. Meskipun, saya merasa saya masih agak bingung. Saya merasa ada banyak hal yang perlu saya manfaatkan untuk benar-benar meningkatkan pengembangan aplikasi saya.
Sebagai contoh
Saya ingin dapat mengkarantina setiap perubahan volatile / utama menjadi semacam 'sub-repositori' atau sesuatu. Saya menemukan bahwa perubahan besar menghambat perbaikan bug kecil yang cukup mendesak. Bagaimana saya bisa mendorong satu pembaruan sederhana tanpa mendorong kode yang tidak lengkap atau rusak?
version-control
Derek Adair
sumber
sumber
Jawaban:
Untuk mengatasi contoh Anda, Anda memiliki tiga kemungkinan untuk melakukan itu:
svn commit file1 path1/file2 path2
untuk mengkomit file1, path1 / file2 dan setiap perubahan di bawah path2.svn copy svn://hostname/projectname/trunk svn://hostname/branches/branch-for-feature-X
. Sekarang Anda dapat memindahkan copy pekerjaan Anda ke lokasi baru: svn switchsvn switch svn://hostname/projectname/branches/branch-for-feature-X
. Jika Anda beralih dalam mode perbaikan bug Anda mengkomit perubahan aktual Anda, alihkan copy pekerjaan Anda kembali ke trunk, perbaiki bug dan komit, dan alihkan copy pekerjaan kembali ke cabang fitur Anda. Jika Anda siap mengembangkan fitur, Anda dapat menggabungkannya kembali ke bagasi.Untuk kasus sederhana yang dijelaskan, Anda biasanya akan menggunakan # 1 (paling sering saya gunakan), terkadang # 2. Bekerja dengan cabang (kasus # 3) lebih rumit ( baca lebih lanjut ), tetapi memungkinkan lebih banyak trik. Tetapi cabang yang cocok dengan deskripsi Anda tentang subrepositori.
Selain dari teladan Anda, saya tidak bisa bicara banyak. Ada banyak hal tentang Subversion, tetapi saya tidak tahu apa yang sudah Anda gunakan dan apa yang Anda butuhkan untuk proyek Anda. Untuk mempelajari lebih lanjut tentang SVN, Buku SVN adalah sumber yang bagus: http://svnbook.red-bean.com/
sumber
Anda dapat memeriksa kode ke kotak pasir yang berbeda alih-alih hanya mengambil satu salinan dan membuat semua perubahan di sana.
Jadi Anda bisa memiliki struktur folder yang mirip dengan ini:
dll.
Semua itu dapat diperiksa dari lokasi yang sama di SVN Anda, mis
http://mysvnrepo/trunk
.Dengan cara ini Anda dapat melakukan dari sandbox perbaikan bug Anda tanpa mempengaruhi yang pengembangan fitur, meskipun Anda harus menjalankan
svn update
dari sandbox lain untuk mendapatkan perubahan yang dilakukan untuk perbaikan bug.sumber
Apakah Anda sudah melihat Cabang Subversi sama sekali?
Salah satu teknik umum adalah menjaga Trunk Anda stabil, menerapkan perbaikan kritis sesuai kebutuhan. Anda kemudian membuat cabang untuk setiap karya signifikan baru. Pengembang yang mengerjakan proyek itu memeriksa cabang dan berkomitmen ke cabang. Itu tidak memengaruhi Trunk sampai Anda memutuskan untuk menggabungkan cabang kembali ke trunk utama sebagai bagian dari integrasi akhir Anda.
Pendekatan lain adalah memiliki cabang untuk Rilis tertentu, untuk menghindari pekerjaan lain yang tidak sengaja dilakukan pada masalah yang menyebabkan bagasi. Anda dapat memperbaiki bug 'Rilis Cabang' sesuai kebutuhan dan kemudian lipat perbaikan itu kembali ke bagasi saat siap.
Pengembang Anda dapat memeriksa beberapa salinan yang berfungsi - trunk dan cabang apa pun - atau dapat bertukar antara trunk dan cabang tertentu dengan
svn switch
perintah.Saya tidak merekomendasikan memiliki banyak salinan 'kotak pasir' yang Anda simpan secara terpisah karena (a) ini melarang kolaborasi dengan orang lain dan (b) akan terlalu mudah untuk secara tidak sengaja melakukan perubahan yang tidak berfungsi namun belum ke bagasi utama.
sumber
Ukuran copy pekerjaan saya saat ini adalah 10GB, dengan lebih dari 50.000 file. Saya dapat memiliki beberapa salinan untuk cabang yang berbeda, tetapi perlu beberapa saat hanya untuk membuat salinan baru!
Ketika bug mendesak datang, saya biasanya menyimpan semua perubahan saya di patch, mengembalikan semuanya, mengerjakan bug dan melakukan, lalu menerapkan patch yang saya simpan ... Jauh lebih mudah dan lebih cepat daripada mendapatkan copy pekerjaan yang baru. Jika saya harus sering melakukan ini, saya akan memiliki dua salinan yang berfungsi: satu untuk perubahan jangka panjang, yang lain untuk perbaikan bug.
sumber