July 27th, 2010

Еще о системах контроля версий

До сих пор с большим удовольствием читал Джоэля Спольски. Но вот одно из последних его высказываний очень сильно удивило.

Речь идет о распределенной системе контроля версий Mercurial и вот этой его записи, а также о вот этом проекте, где он очень подробно обучает работе с этой системой контроля версий.

Туториал у него, кстати, получился отличный, рекомендую. А удивило меня вот что.

Если кому лень читать оригиналы на английском, то вкратце там вот что. Он утверждает, что Mercurial - это нереальный шаг вперед, новая модель контроля версий и новая модель мышления, и что стоит забыть все то, что было ранее, в частности, SVN. Мол, проблема SVN в том, что она хранит версии файлов, а Mercurial хранит отличия между версиями. И вроде как именно это позволяет Mercurial решать нерешаемые в SVN задачи одним кликом мыши и вообще нереально облегчать работу всей команде разработки. Только надо сначала изменить свое мышление и начать тоже мыслить не версиями файлов, а их изменениями. И вообще, вот прямо сейчас все, кто используют SVN, должны все бросить и перейти на Mercurial :)

Но позвольте, о какой смене мышления и революции здесь идет речь? Версии файлов или изменения между версиями - взаимозаменяемая штука! Из первого можно легко получить второе, и наоборот!

Да, я могу допустить, что в Mercurial реализовали более продвинутый алгоритм слияния веток, но ни о какой революции в подходах речь не идет и идти не может.

Точно также я не понимаю и утверждения о необходимости полной смены мышления, чтобы перейти от SVN к Mercurial? Единственное серьезное отличие - это то, что Mercurial - распределенная система, а SVN - нет. Но к тому, что первая хранит отличия, а вторая - версии, это опять-таки не имеет никакого отношения...

Допускаю, конечно, что я чего-то не заметил, но пока картинка для меня выглядит именно так - все отличия Mercurial от SVN - это ее распределенность, и не более того.