Починаючи з фонового режиму SVN, одна з найважчих речей, до якої можна звикнути під час роботи з системами DVCS, - це те, як вони, як видається, розглядають будь-яку невідбуту зміну, як би бомба, що тикає.
У Mercurial, якщо ви намагаєтеся отримати зміни, і у вас є будь-які невідомі зміни в робочій копії, вам доведеться перестрибувати обручі, щоб змусити їх просто об'єднати вхідні зміни. Спробуйте переключити гілки? Це змусить вас прилаштувати все, і тоді вам доведеться негайно зняти його з іншого кінця. (SVN не має проблем з жодним із цих сценаріїв.)
Git - це приблизно так само. Я працюю пліч-о-пліч з іншим розробником над проектом, і я просто спробував вибрати один з його зобов’язань у свою вилку. Мені відмовилися відмовитись, оскільки я опублікував зміни в своїй робочій копії в абсолютно інших файлах, ніж ті, що змінилися в його комісії. Існує навіть не варіант злиття; мабуть, я повинен спершу приховати свої зміни!
Якби людина ставилася до чогось абсолютно нешкідливого з такою надзвичайною обережністю, я б назвав це «фобією», ірраціональним страхом, який слід розглядати як психічний розлад. Але Git і Mercurial були розроблені двома різними командами розумних, раціональних розробників, тому мені доводиться цікавитись, чи знають вони щось, про що я не знаю.
Чи є технічна причина, яка виправдовує таке ставлення до неспроможних змін? І якщо так, то чому, як видається, ця проблема існує лише на DVCS?