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.6setelah 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).
hgsebenarnya menyimpan daftar file yang telah atau belum ditandai sebagai "diselesaikan" (menggunakan hg resolve). Jika ada Ufile dalam daftar ini, itu tidak akan membiarkan Anda melakukan.
hg resolvedigunakan 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.