Гит, zeromq и двойная бухгалтерия
Недавно
vit_r писал про то, что гит не пригоден для промышленной разработки, т.к. позволяет вести "двойную бухгалтерию".
Насколько я понял, речь шла про то, что код на рабочем месте разработчика, код в мастере и код в релизе могут быть совершенно разными, причем инструментом это прямо рекомендуется. Ну, по крайней мере, именно это меня привлекает в гите - мне постоянно нужны экспериментальные ветки в стиле "сохранился, заглянул за угол, увидел что там босс-монстр, загрузился и пошел другим путем".
Внезапно, в процессе изучения ZeroMQ я наткнулся на прямую иллюстрацию такой двойной бухгалтерии.
Вот например, стабильная версия 4.0.5, исходники под винду: http://download.zeromq.org/zeromq-4.0.5.zip
Так вот, последние 230 коммитов в changelog этой версии напрочь отсутствуют в https://github.com/zeromq/libzmq
Более того, в этой репе существует сугубо две ветки и ни одного тэга.
Ну, то что мастер не собирается в 2010 студии из-за зависимости от крипто-либы sodium, а rc4.1.0 не собирается из-за отсутствующих файлов msbuild, это тащемта уже мелочи. Но по крайней мере, rc4.1.0 есть в гите.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Насколько я понял, речь шла про то, что код на рабочем месте разработчика, код в мастере и код в релизе могут быть совершенно разными, причем инструментом это прямо рекомендуется. Ну, по крайней мере, именно это меня привлекает в гите - мне постоянно нужны экспериментальные ветки в стиле "сохранился, заглянул за угол, увидел что там босс-монстр, загрузился и пошел другим путем".
Внезапно, в процессе изучения ZeroMQ я наткнулся на прямую иллюстрацию такой двойной бухгалтерии.
Вот например, стабильная версия 4.0.5, исходники под винду: http://download.zeromq.org/zeromq-4.0.5.zip
Так вот, последние 230 коммитов в changelog этой версии напрочь отсутствуют в https://github.com/zeromq/libzmq
Более того, в этой репе существует сугубо две ветки и ни одного тэга.
Ну, то что мастер не собирается в 2010 студии из-за зависимости от крипто-либы sodium, а rc4.1.0 не собирается из-за отсутствующих файлов msbuild, это тащемта уже мелочи. Но по крайней мере, rc4.1.0 есть в гите.
no subject
Что же до описанной двойной бухгалтерии, то VCS тут вообще ни при чем. Я неоднократно наблюдал подобное с абсолютно любыми VCS и даже вообще без VCS. И считаю, что это, конечно, бардак, но куда хуже, если в мастер коммитят код в состоянии "у меня все работает", от чего ВНЕЗАПНО все ломается у всех остальных разработчиков проекта.
А еще интереснее бывает, если из такого мастера в этот момент выпускают релиз... Ибо дисциплина "релиз выпускаем из тега, а тег ставим на релизную ветку после того, как в ней прошли все тесты, включая ручные" совершенно перпендикулярна модели работы VCS и наличию VCS как таковой.