Berasal dari latar belakang SVN, salah satu hal tersulit untuk membiasakan diri ketika bekerja dengan sistem DVCS adalah cara mereka semua tampaknya menganggap setiap perubahan yang tidak dikomit sama sekali seperti bom waktu yang sedang berdetak.
Di Mercurial, jika Anda mencoba mengambil perubahan dan Anda memiliki perubahan yang tidak dikomit di copy pekerjaan Anda, Anda harus melompat melalui lingkaran untuk mendapatkannya hanya untuk menggabungkan perubahan yang masuk. Cobalah untuk beralih cabang? Ini akan memaksa Anda untuk mengesampingkan semuanya dan kemudian Anda harus segera mengosongkan semuanya di ujung lainnya. (SVN tidak memiliki masalah dengan salah satu skenario ini.)
Git hampir sama caranya. Saya bekerja berdampingan dengan pengembang lain dalam suatu proyek, dan saya hanya mencoba untuk memilih salah satu dari komitmennya ke dalam garpu saya. Itu menolak untuk membiarkan saya karena saya memiliki perubahan komitmen dalam copy pekerjaan saya, pada file yang sama sekali berbeda dari yang diubah dalam komitnya. Bahkan tidak ada opsi penggabungan; rupanya saya harus menyimpan perubahan saya terlebih dahulu!
Jika seseorang memperlakukan sesuatu yang sama sekali tidak berbahaya dengan sangat hati-hati, saya akan menyebutnya "fobia," ketakutan irasional yang harus dianggap sebagai gangguan mental. Tapi Git dan Mercurial dirancang oleh dua tim pengembang cerdas dan rasional yang berbeda, jadi saya harus bertanya-tanya apakah mereka tahu sesuatu yang tidak saya sadari.
Apakah ada alasan teknis yang membenarkan sikap ini terhadap perubahan yang tidak dikomit? Dan jika demikian, mengapa masalah yang dipermasalahkan tampaknya hanya ada di DVCSes?