Какая система контроля версий лучше всего разработана для предотвращения одновременного редактирования? - PullRequest
6 голосов
/ 28 августа 2009

Мы годами использовали CVS (с интерфейсом TortoiseCVS) как для управления исходным кодом, так и для широкого контроля документов (включая двоичные файлы, такие как Word, Excel, Framemaker, данные испытаний, результаты моделирования и т. Д.). В отличие от типичных систем контроля версий, в 99% случаев мы хотим предотвращать одновременное редактирование - когда пользователь начинает редактировать файл, предварительно отредактированная версия файла становится доступной только для чтения всем остальным.

Многие из людей, которые будут использовать это, не являются программистами или даже не разбираются в компьютерах, поэтому мы также ищем систему, которая позволила бы людям просто добавлять документы в хранилище, проверять и редактировать документ (если кто-то еще в настоящее время редактирует), и проверьте его снова с минимумом суеты.

Мы добились, чтобы это работало достаточно хорошо с CVS + TortoiseCVS, но теперь мы рассматриваем Subversion и Mercurial (и открыты для других, если они лучше подходят) для их лучшего отслеживания версий, поэтому мне было интересно, какие один поддерживает блокировку файлов наиболее прозрачно. Например, мы бы хотели, чтобы по умолчанию была включена эксклюзивная блокировка, и мы хотим, чтобы кто-то случайно начал редактировать файл, извлеченный кем-то другим, как можно сложнее. Например, когда кто-то извлекает файл для редактирования, он сначала проверяет базу данных master , даже если он недавно не обновил свою песочницу . Возможно, он даже не позволит пользователю проверить документ, если он не подключен к сети и не может зарегистрироваться с помощью корабля.

Ответы [ 8 ]

10 голосов
/ 28 августа 2009

Subversion предлагает принудительную блокировку. Когда Propoerty svn:needs-lock установлен, файл извлекается только для чтения, и пользователь должен заблокировать его, чтобы получить доступную для записи рабочую копию. Никакой другой пользователь не может заблокировать этот же файл оттуда.

5 голосов
/ 28 августа 2009

Я знаю, что его нет в вашем списке, но мы были довольны Perforce. Вы можете предотвратить несколько проверок с помощью

Ваш администратор Perforce может использовать команда p4 typemap, чтобы убедиться, что все файлы указанного типа (для экземпляр, //depot/.../*.gif для всех .gif файлы) может быть открыт только одним пользователь за один раз. Посмотреть спектакль Справочник команд для деталей.

4 голосов
/ 28 августа 2009

Похоже, Subversion с TortoiseSVN будет соответствовать всем требованиям. Как упоминал Арне Бурмейстер, вы можете по умолчанию установить его в режим needs-lock, где каждый извлеченный файл будет доступен только для чтения, пока вы не получите блокировку. С помощью хуков вы можете уведомлять других пользователей о блокировке или разблокировании файла.

TortoiseSVN интегрируется с проводником Windows, поэтому требует небольшого опыта работы с компьютером.

Обратите внимание, что в Subversion есть функция «блокировки кражи», но вы можете отключить ее, если хотите, с помощью ловушки PreLock.

2 голосов
/ 30 августа 2009

Вы упомянули Mercurial, и, несмотря на то, что я являюсь разработчиком Mercurial, я должен согласиться с предложениями по использованию Subversion. Mercurial - это все, что позволяет людям развиваться распределенным образом. Это включает в себя создание частных коммитов, которые позже будут доступны только другим. Другими словами - Mercurial не пытается блокировать файлы на центральном сервере (даже нет концепции центрального сервера).

Пойдите с Subversion, это такая же централизованная система контроля версий, которую вы найдете (я пробовал только системы с открытым исходным кодом, я ничего не знаю о системах с закрытыми исходными кодами). Если хотите, вы все равно можете поэкспериментировать с hgsubversion"на стороне".

1 голос
/ 29 августа 2009

Я знаю, что IBM ClearCase предотвращает это. По этой причине мы используем его в нашей компании.

0 голосов
/ 01 сентября 2009

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

Не могу поверить, что говорю это, но если вы хотите работать таким образом, то визуальная безопасность источника - единственная система, которая мне известна, сконструированная таким образом. Если вы хотите более современную / надежную версию, посмотрите на Vault sourcegear - хотя они приложили огромные усилия, чтобы создать нечто, похожее на vss, но хорошо работающее в среде, подобной svn.

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

0 голосов
/ 30 августа 2009

Оригинальный RCS. При извлечении файла вы блокируете его: «имя файла co -l». После этого, пока вы не вернете его обратно ("ci filename"), никто не сможет изменить файл.

0 голосов
/ 28 августа 2009

Если это только документы (например, word, excel и т. Д.), Вы можете взглянуть на менеджер документов Alfresco, его довольно просто использовать.

http://www.alfresco.com/products/dm/features/

...