Блокировка ревизионного контроля: жюри все еще отсутствует? - PullRequest
21 голосов
/ 14 января 2009

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

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

Мой вопрос не в том, кто прав. Я почти уверен, какой ответ я получу на это. Мой вопрос заключается в том, есть ли еще какие-либо дебаты по этому вопросу? Есть ли честный лагерь "про блокировку", который делает серьезное дело? Делается ли какая-либо работа по продвижению искусства контроля версий, основанного на модели блокировки? Или блокирующие вентиляторы порют мертвую лошадь?

EDIT: Ответы до сих пор хорошо объясняли, почему эксклюзивные блокировки иногда полезны. Однако я говорю о продвижении рабочего процесса, в котором эксклюзивные блокировки используются для всего .

Ответы [ 12 ]

1 голос
/ 04 декабря 2012

Немного опоздал к этому обсуждению, но для любого, кто прочитал и переварил Написание твердого кода * Стива Магуайра , главное, чтобы ваши инструменты выявляли и идентифицировали как можно больше проблем.

Компилятор не устает после 12 или более часов подряд и забывает выдавать синтаксическую ошибку. Но довольно просто забыть шаг инициации коммуникации и оплаты за нее позже.

Если вам требуется контроль версий двоичного файла, то вам нужна некоторая форма блокировки, чтобы предотвратить - или, по крайней мере, предупредить - случайную перезапись. Это должно быть фундаментальной особенностью любой VCS, даже распределенной. Для использования такой функции в DVCS может потребоваться создание центрального хранилища, но разве это так плохо? Если вы используете DVCS в любой корпоративной среде, у вас будет центральное репо для обеспечения непрерывности бизнеса.

1 голос
/ 15 января 2009

Обращаясь к вашим комментариям редактирования.

Даже RCS и SCCS (дедушка VCS для большей части того, что в наши дни работает на Unix / Linux) разрешают одновременный доступ к редактированию файлов, и я не имею в виду отдельные ветви. С SCCS вы могли бы сделать 'get -k SCCS/s.filename.c' и получить редактируемую копию файла - и вы могли бы использовать опцию ('-p' IIRC), чтобы получить ее на стандартный вывод. Вы могли бы, чтобы другие люди делали то же самое. Затем, когда пришло время для регистрации, вы должны были убедиться, что вы начали с правильной версии или выполнить слияние, чтобы иметь дело с изменениями с момента сбора вашей начальной версии и т. Д. И ни одна из этих проверок не была автоматизирована, и конфликты не обрабатывались и не отмечались автоматически и т. д. Я не утверждал, что это было легко; просто это можно было сделать. (Согласно этой схеме блокировки будут удерживаться только в течение короткого времени, пока выполняется проверка / слияние. У вас все еще есть блокировки - их требует SCCS, а RCS может быть скомпилирована с обязательной строгой блокировкой - но только для короткой продолжительности, но это тяжелая работа - никто не делал этого, потому что это такая тяжелая работа.)

Современные VCS решают большинство проблем автоматически или почти автоматически. В этом их огромная сила по сравнению с системами предков. А поскольку объединение является простым и почти автоматическим, оно допускает разные стили разработки.

Мне все еще нравится блокировка. Основной рабочей системой, которую я использую, является (IBM Rational) Atria ClearCase; для собственной разработки я использую RCS (отказавшись от SCCS около 2000 года). Оба используют блокировку. Но у ClearCase есть хорошие инструменты для слияния, и мы делаем это немало, не в последнюю очередь потому, что в продукте, над которым я работаю, есть по крайней мере 4 кодовых линии (то есть 4 основных версии). И исправления ошибок в одной версии довольно часто применяются к другим версиям, почти дословно.

Итак, VCS только для блокировки обычно не имеет достаточно хороших средств слияния, чтобы поощрять использование одновременного редактирования файлов. Более современные VCS имеют лучшие средства слияния (а также ветвления) и, следовательно, не так сильно нуждаются в блокировке для более чем кратчайшего срока (достаточного для того, чтобы операции над файлом - или файлами в более продвинутых системах - были атомарными) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...