Гит, zeromq и двойная бухгалтерия
Dec. 5th, 2014 12:26 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Недавно
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
Date: 2014-12-05 10:04 am (UTC)Что же до описанной двойной бухгалтерии, то VCS тут вообще ни при чем. Я неоднократно наблюдал подобное с абсолютно любыми VCS и даже вообще без VCS. И считаю, что это, конечно, бардак, но куда хуже, если в мастер коммитят код в состоянии "у меня все работает", от чего ВНЕЗАПНО все ломается у всех остальных разработчиков проекта.
А еще интереснее бывает, если из такого мастера в этот момент выпускают релиз... Ибо дисциплина "релиз выпускаем из тега, а тег ставим на релизную ветку после того, как в ней прошли все тесты, включая ручные" совершенно перпендикулярна модели работы VCS и наличию VCS как таковой.
no subject
Date: 2014-12-05 10:23 am (UTC)(лично мне проще иметь единый репозиторий, чтобы все-все-все изменения были во всех клонах - просто чтобы не думать, чем клоны различаются, и за это я готов платить наличием в репе мусора... особенно с учётом того факта, что я в один клик могу спрятать из истории всё, кроме предков текущего head)
Ну а насчёт бардака - соглашусь с
Git вполне позволяет делать всё нормально, а то, что какое-то поведение не отсекает - это решается или административно, или демонами (ну в смысле сборка релиза из выделенного репозитория, push в него проходит через автоматизированные проверки)
no subject
Date: 2014-12-05 10:25 am (UTC)Экспериментировать надо не с кодом, а с прототипами. Мало того, что это быстрее и надёжнее, это ещё и позволяет параллельно рассмотреть несколько вариантов и выбрать лучший.
no subject
Date: 2014-12-05 11:45 am (UTC)no subject
Date: 2014-12-05 11:52 am (UTC)no subject
Date: 2014-12-05 12:07 pm (UTC)Я говорю о том, что возможность подчисток опубликованной истории блокируется.
Вы, как я понял, утверждаете, что это не так.
Конфигурационная опция receive.denyNonFastForwards не убедит вас в моей правоте?
no subject
Date: 2014-12-05 12:18 pm (UTC)Второе, конечно.
no subject
Date: 2014-12-05 12:21 pm (UTC)no subject
Date: 2014-12-05 10:36 am (UTC)no subject
Date: 2014-12-05 10:51 am (UTC)no subject
Date: 2014-12-05 12:50 pm (UTC)— Git.
no subject
Date: 2014-12-05 07:50 pm (UTC)вот же: https://github.com/zeromq/libzmq/commits/master~40 . Не они разве? Там же прямо хеш есть
no subject
Date: 2014-12-05 08:13 pm (UTC)no subject
Date: 2014-12-05 08:48 pm (UTC)no subject
Date: 2014-12-05 09:03 pm (UTC)Ясно, они отдельно держат релизную репу.
no subject
Date: 2014-12-06 07:40 am (UTC)no subject
Date: 2014-12-06 03:04 am (UTC)в цвс такого трэша не было! и даже в свн такой подлянки не было! да и ващще твоя ветка почему-то растет из жопы, а не от моего кошерного каммита!
no subject
Date: 2014-12-06 09:29 am (UTC)В норме, разработки ведутся в васиной и твоей ветке, периодически втаскивая мастер c merge или rebase.
По мере завершения работы и тестов, твою ветку либо главный, либо ты сам, если мелкая команда, пушишь в мастер, желательно через --ff-only
В общем, у меня с гитом проблем не было вообще, они могут быть, если его использовать как svn,
no subject
Date: 2014-12-07 02:15 pm (UTC)man git-request-pull
no subject
Date: 2014-12-06 09:31 pm (UTC)Для некоторых интересных проектов не существует новых релизов годами. Коммиты сотнями есть свежие, а бампа нет. Для таких проектов существуют scm-билды.