VCS пошли куда-то не туда

May 22, 2019 19:06

Я более 20 лет использую системы контроля версий, начинал ещё с RCS, сейчас такую наверное и не помнят. Но вот это для меня звучит полной тарабарщиной:

Squashing commits via the command line using "git merge - squash" is just another time consuming step. That's why we have an option to allow Git users to automatically squash commits in feature ( Read more... )

vcs, мысли вслух

Leave a comment

Comments 10

coctic May 22 2019, 13:56:44 UTC
Ты смотришь на VCS с точки зрения старых централизованных систем: CVS, SVN, RCS тот же. Если у тебя один публичный репозиторий, то да, история - священная корова, которую трогать нельзя. Но DVCS другие, там репозиториев может быть много, в том числе приватный репозиторий разработчика, где он экспериментирует, по сто раз откатывает патчи, гоняет изменения по веткам, матерится в коммит логах, в конце концов. Естестdенно, все это нельзя выкатывать в публичный репозиторий as is, слишком много шума, как минимум. Отсюда и желание сделать красивый патч, и все вот эти пляски. К слову сказать, средств для этого, по крайней мере в гите, до сих пор катастрофически не хватает, все эти merge --squash и т.п. довольно хрупкие и легко ломаются, требуется изрядная дисциплина при их использовании. Но это не отменяет факта, что проблема подготовить коммит перед тем, как выкатить его на публику, существует.

Reply

victor_sudakov May 23 2019, 13:37:50 UTC
Но если есть такой публичный репозиторий, в который полагается выкатывать только красивые патчи, то это означает вырождение DVCS в централизованную систему, и не надо притворяться, что при таком подходе git чем-то отличается от svn.

Кстати вопрос. В публичном репозитории тоже историю модифицируют, или это происходит только в момент пуша изменений из приватных в публичный?

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

Reply

coctic May 23 2019, 13:58:40 UTC
Какое же тут вырождение? Как раз наоборот, у тебя есть много репозиториев, никто не мешает обмениваться коммитами с матюками и экспериментами, да и самому можно держать несколько репозиториев, вся распределенность сохраняется. Можно держать, например, приватный репозиторий для группы разработчиков, где вести себя расслабленно, и публичный (или апстрим), куда выкатывать уже красивую историю. Как я понимаю, с SVN такое невозможно, там удаленный репозиторий единственный в принципе ( ... )

Reply

victor_sudakov May 23 2019, 14:21:33 UTC
Изменение истории происходит не в момент пуша, а до него. Пуш идет уже на измененной истории.

А если я не хочу модифицировать историю в своём личном репозитории? Если я хочу непременно сохранить все свои борения, ошибки и матюки, но вынужден прятать их от попадания в публичный репозиторий, то как я должен действовать?

Нет, в публичном репозитории НИКОГДА нельзя менять историю. Если точнее, можно менять историю только у тех коммитов,

Значит будут менять, соблазн "подчистить летописи" всегда слишком велик.

Reply


Leave a comment

Up