Bir SVN geçmişinden gelmek, DVCS sistemleri ile çalışırken alışılması en zor şeylerden biri, hepsinin bir saatli bomba gibi herhangi bir taahhüt edilmemiş değişikliği dikkate alma biçimidir .
Mercurial'ta, değişiklikleri almaya çalışırsanız ve çalışma kopyanızda herhangi bir taahhüt edilmemiş değişiklik varsa, gelen değişiklikleri birleştirmek için çembere atlamanız gerekir. Dalları değiştirmeye çalışın mı? Seni her şeyi rafa atmaya zorlayacak ve sonra diğer tarafta hemen raftan çıkarmalısın. (SVN'nin bu senaryolardan hiçbiriyle sorunu yoktur.)
Git de aynı şekilde. Bir projede başka bir geliştiriciyle yan yana çalışıyorum ve taahhütlerinden birini kirazımdan almaya çalıştım. Bana izin vermeyi reddetti çünkü çalışma kopyamda taahhüdünde değiştirilenden tamamen farklı dosyalarda taahhüt edilmemiş değişiklikler var . Birleştirme seçeneği bile yoktur; Görünüşe göre önce değişiklikleri saklamak zorundayım!
Bir kişi bu kadar aşırı dikkatle tamamen zararsız bir şeyi tedavi edecek olsaydı, buna "fobi", zihinsel bir bozukluk olarak görülmesi gereken irrasyonel bir korku derdim. Ancak Git ve Mercurial, iki farklı akıllı, rasyonel geliştirici ekibi tarafından tasarlandı, bu yüzden farkında olmadığım bir şey biliyorlar mı diye merak etmeliyim.
Taahhüt edilmemiş değişikliklere karşı bu tutumu haklı çıkaran teknik bir neden var mı? Ve eğer öyleyse, söz konusu sorun neden sadece DVCS'lerde var gibi görünüyor?