Dalam VCS tradisional, saya bisa mengerti mengapa Anda tidak akan melakukan file yang tidak terselesaikan karena Anda dapat merusak build. Namun, saya tidak mengerti mengapa Anda tidak boleh melakukan file yang tidak terselesaikan dalam DVCS (beberapa dari mereka benar-benar akan mencegah Anda melakukan file).
Sebaliknya, saya pikir repositori Anda harus dikunci dari mendorong dan menarik , tetapi tidak melakukan.
Mampu berkomitmen selama proses penggabungan memiliki beberapa keuntungan (seperti yang saya lihat):
- Perubahan gabungan yang sebenarnya ada dalam riwayat.
- Jika penggabungan itu sangat besar, Anda bisa membuat komitmen berkala.
- Jika Anda melakukan kesalahan, akan lebih mudah untuk memutar kembali (tanpa harus mengulang seluruh penggabungan).
- File-file dapat tetap ditandai sebagai tidak terselesaikan sampai ditandai sebagai terselesaikan. Ini akan mencegah mendorong / menarik.
Anda juga bisa berpotensi membuat set perubahan bertindak sebagai penggabungan, bukan hanya satu. Ini akan memungkinkan Anda untuk tetap menggunakan alat seperti git rerere
.
Jadi mengapa melakukan dengan file yang tidak terselesaikan disukai / dicegah? Apakah ada alasan selain tradisi?
hg 1.6
setelah penggabungan, file ditandai sebagai tidak terselesaikan. tidakhg
akan membiarkan Anda berkomitmen sampai Anda telah menandai mereka sebagai diselesaikan (tidak berarti Anda benar-benar harus menyelesaikannya, tetapi saya akan menganggap itu idenya).
hg
sebenarnya menyimpan daftar file yang telah atau belum ditandai sebagai "diselesaikan" (menggunakan hg resolve
). Jika ada U
file dalam daftar ini, itu tidak akan membiarkan Anda melakukan.
hg resolve
digunakan khusus untuk penggabungan dengan konflik; lihat selenic.com/mercurial/hg.1.html#resolve . Note that Mercurial will not let you commit files with unresolved merge conflicts. You must use hg resolve -m ... before you can commit after a conflicting merge.