Проекти з відкритим початковим кодом полюбляють git, комерційні компанії ж тяжіють до perforce чи mercurial. Без сумніву git — це не просто система контролю версій, але й незамінний інструмент під час розробки. Чули про Фіксуйте часто, шліфуйте пізніше, публікуйте один раз? То й я використовував git-p4 кілька років тому. Але ще цікавіша історія цього разу.

Компанія, для якої я працюю тепер, використовує Mercurial. Хоча це розподілена система, як і git, і для більшості команд можна легко знайти відповідники, все ще не вистачає гнучкості git. Мені справді імпонує ідея розробляти великий шмат програмного забезпечення малими узгодженими кроками. Мені дійсно часто потрібно повертатися до попередніх фіксацій і переставляти, виправляти, переносити зміни між ними. Вже не кажучи про галуження і злиття гілок.

Всі мої задачі можна в принципі робити і в меркуріалі, але його не було розроблено для таких задач, відверто кажучи. Наприклад, я нещодавно спробував hg histedit, але передумав і спробував hg histedit --abort, очікуючи опинитися в тому стані, з якого почав. І що? Мою історію було втрачено, але, на щастя, залишилися нові версії файлів.

Тож я знайшов компроміс: hg-git. Отже, я використовую git на моїй робочій станції: фіксую, редагую, виправляю; потім, коли нарешті я задоволений, імпортую зміни у меркуріал і публікую їх.