Комментарии 10
Печально, мне меркуриал тоже больше нравился :(
А вот у меня беда. У меня репозитории с сабрепами на меркуриале. И совершенно непонятно как их конвертировать, с сохранением связей.
если что-то пошло не так, — откатываешь коммиты
Как это «откатываешь»? Локально можно откатить, но что делать с центральным репозиторием? В этом случае нужно не «откатывать», а «накатывать» новый коммит, который откатывает изменения. В итоге у вас в истории остаётся сломанное ненужное состояние. А вот в гите вы просто перемещаете ветку на коммит назад, и всё, нету плохого коммита.
Ситуация усложняется, когда вы сделали изменения, например, в release бранче, а надо было в develop. Здесь уже и «накатывание отката» не поможет, потому что при слиянии release в develop вы откатите изменения и в develop-е. И вот вам приходится снова какие-то ненужные коммиты делать.
В меркуриале можно откатить (revert) правки к версии за таким-то номером (Revision), и закоммитить это состояние следующим коммитом. Да, из истории коммитов это не потрешь, тем более, с удаленного репозитория. И, на мой взгляд — это хорошо — видны будут все перипетии работы над кодом. Лично мне не нравится то, что поклонники Git любят использовать возможность править историю коммитов.
А ветки release и develop — да, лучше не путать.
видны будут все перипетии работы над кодом
Перипетии не несут никакой самостоятельной ценности. Ценность несёт целостная, последовательная история состоящая из небольших атомарных коммитов с описательными комментариями, а таковую почти никогда не получить если просто периодически фиксировать состояние процесса разработки, поэтому редактирование истории — насущная необходимость и хороший тон. Но только до вливания в основную ветку, естественно.
Лично мне не нравится то, что поклонники Git любят использовать возможность править историю коммитов.
Это не прерогатива поклонников Git, поклонники mercurial всегда хвалились MQ, Evolve и подобными расширениями.
почему Git, работающий временами с довольно таки неочевидной логикой, настолько популярнее гораздо более логичного Mercurial
Может потому что как раз с логикой там всё в порядке, а если вы к чему-то привыкли не значит что это единственный и тем более единственно верный вариант того как может быть?
Мой опыт работы с mercurial начался с непозволительно медленной для VCS последнего поколения работы с большим репозиторием, сильного удивления от закрытых веток и в итоге попадания в multihead состояние, которое я с ходу не разобрался как разрешить, на том и закончился. Просто как пример того что оценка очевидности субъективна.
откатываешь коммиты, не думая о том, что находится под капотом системы контроля версий, и об указателе на Head, а просто делая то, что нужно?
Так работают с любой VCS, когда не требуют от неё быть другой VCS.
один из столпов сопротивления мейнстриму в системах контроля версий
О как. А какой смысл в этом сопротивлении? Последствий кроме усложнения взаимодействия разработчиков я не вижу.
Корзинка с сюрпризами — cпасите наши push'и