metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-08-06 01:10 pm

Меркуриал

В сабжевой DVCS все хорошо, но есть один слабо понятный мне момент. А именно, merge. Если ребе [livejournal.com profile] belnetmon сделает push в центральный репозиторий и я после этого хочу сделать тоже push, то даже если у нас никак не пересекающиеся изменения - оно этого сделать не даст, нужно сначала сделать hg pull, потом hg merge, потом hg commit и только после этого получится сделать hg push.
Может, я чего не так делаю?

[identity profile] vp.livejournal.com 2010-08-06 01:34 pm (UTC)(link)
но согласись, что это какие-то издержки меркуриала? Логики ведь за этим никакой нет.

[identity profile] theiced.livejournal.com 2010-08-06 01:38 pm (UTC)(link)
есть. все коммиты в одной ветке идут последовательно. (авто)мерж-коммит позволит глянуть чо и как смержилось в случае факапа.

[identity profile] blacklion.livejournal.com 2010-08-06 01:43 pm (UTC)(link)
Есть за этим логика. У git та же фигня и у любой changset-based VCS тоже самое. Это издержки того, что мы храним именно изменения группированные, а не состояния (снепшоты).
И, да, это как раз сильно упрощает merge, хотя и делает его обязательным.

[identity profile] morozov.livejournal.com 2010-08-06 02:51 pm (UTC)(link)
По идее это правильное поведение, хотя и неудобно-раздражающее. Даже если вы с коллегой не правили одни и те же файлы, нет гарантии того, что его правки не поломали ваш код и наоборот. Поэтому вас и заставляют сначала слить свои правки с его, протестировать, а уже потом пушить изменения в более основной репозиторий.