Pull to refresh

Comments 10

А вот у меня беда. У меня репозитории с сабрепами на меркуриале. И совершенно непонятно как их конвертировать, с сохранением связей.

UFO just landed and posted this here
Мне git понравился тем, что можно делать историю более линейной, без нелепого количества мёрж-коммитов. Или вот вы пишете:
если что-то пошло не так, — откатываешь коммиты

Как это «откатываешь»? Локально можно откатить, но что делать с центральным репозиторием? В этом случае нужно не «откатывать», а «накатывать» новый коммит, который откатывает изменения. В итоге у вас в истории остаётся сломанное ненужное состояние. А вот в гите вы просто перемещаете ветку на коммит назад, и всё, нету плохого коммита.

Ситуация усложняется, когда вы сделали изменения, например, в release бранче, а надо было в develop. Здесь уже и «накатывание отката» не поможет, потому что при слиянии release в develop вы откатите изменения и в develop-е. И вот вам приходится снова какие-то ненужные коммиты делать.

В меркуриале можно откатить (revert) правки к версии за таким-то номером (Revision), и закоммитить это состояние следующим коммитом. Да, из истории коммитов это не потрешь, тем более, с удаленного репозитория. И, на мой взгляд — это хорошо — видны будут все перипетии работы над кодом. Лично мне не нравится то, что поклонники Git любят использовать возможность править историю коммитов.
А ветки release и develop — да, лучше не путать.

За все 6 лет, что я работаю в mercurial эти перипетии работы над кодом только мешали. И теперь, когда я делаю откат в git-е, я точно так-же не задумываюсь о том, что там происходит под капотом. Переношу ветку на новое место, и всё так же очевидно.
видны будут все перипетии работы над кодом

Перипетии не несут никакой самостоятельной ценности. Ценность несёт целостная, последовательная история состоящая из небольших атомарных коммитов с описательными комментариями, а таковую почти никогда не получить если просто периодически фиксировать состояние процесса разработки, поэтому редактирование истории — насущная необходимость и хороший тон. Но только до вливания в основную ветку, естественно.


Лично мне не нравится то, что поклонники Git любят использовать возможность править историю коммитов.

Это не прерогатива поклонников Git, поклонники mercurial всегда хвалились MQ, Evolve и подобными расширениями.

UFO just landed and posted this here
почему Git, работающий временами с довольно таки неочевидной логикой, настолько популярнее гораздо более логичного Mercurial

Может потому что как раз с логикой там всё в порядке, а если вы к чему-то привыкли не значит что это единственный и тем более единственно верный вариант того как может быть?


Мой опыт работы с mercurial начался с непозволительно медленной для VCS последнего поколения работы с большим репозиторием, сильного удивления от закрытых веток и в итоге попадания в multihead состояние, которое я с ходу не разобрался как разрешить, на том и закончился. Просто как пример того что оценка очевидности субъективна.


откатываешь коммиты, не думая о том, что находится под капотом системы контроля версий, и об указателе на Head, а просто делая то, что нужно?

Так работают с любой VCS, когда не требуют от неё быть другой VCS.


один из столпов сопротивления мейнстриму в системах контроля версий

О как. А какой смысл в этом сопротивлении? Последствий кроме усложнения взаимодействия разработчиков я не вижу.

Sign up to leave a comment.

Articles