2015-08-18 13 views
0

Мы уже используем TFS для нашей команды, и у нас с ней так много проблем. Но мы не собираемся идти так в этой теме.Использование SVN в Visual Studio с помощью VisualSVN Server и AnkhSVN

Я пытаюсь заменить TFS на SVN для нашей команды. Я установил VisualSVN Server на нашем сервере Windows, и мы используем AnkhSVN для клиентской стороны. Проблем с этим программным обеспечением нет. У нас есть доступ ко всему, и все работает нормально.

Однако у меня возникла проблема с многопользовательским редактированием файлов. В TFS, когда кто-то открывает файл и вносит изменения, этот файл будет проверяться только для этого пользователя, и ни один в сети не может изменить этот файл. Но в SVN, когда я открываю файл и вношу некоторые изменения, кто-то другой может сделать то же самое.

И, в конце концов, когда я совершаю свои изменения, и они выполняют «Получить обновления», их файлы конфликтуют.

Так что мой вопрос в том, как решить эту проблему?

ответ

3

Прочитано Version Control with Subversion book (SVNBook). SVNBook - это Библия SVN, а - обязательное чтение для администраторов и пользователей Subversion.

Главы могут быть вам полезны:

Subversion поддерживает модели моделирования версий Copy-Modify-Merge и Lock-Modify-Unlock, и оба они заботятся о ситуации, когда несколько разработчиков должны работать с одними и теми же файлами. Например, несколько пользователей, работающих с одним и тем же файлом после модели Copy-Modify-Merge, могут работать параллельно и разрешать конфликты (если они возникнут) являются одним из основных шагов в этом рабочем процессе, однако в большинстве случаев вам следует избегать их.

С другой стороны, с использованием модели Lock-Modify-Unlock (той, которую вы использовали в качестве пользователя TFS) пользователь может заблокировать файл (т. Е. Запретить другим изменять его, пока он работает над некоторыми изменениями), а затем зафиксировать измените и разблокируйте файл, чтобы другие могли его изменить.

SVNBook | Version Control Basics: Versioning Models раздел.

Подробнее о Locking feature in Subversion in SVNBook.

+0

хорошо, нам нужен способ блокировки-модификации-разблокировки. но этого не происходит. каждый может изменять файлы без каких-либо проблем. как мне это исправить на VisualSVN Server или AnkhSVN? –

+1

Прочтите документ о блокировке: https://www.visualsvn.com/support/svnbook/advanced/locking/. – bahrep

+1

, и этот может помочь: https://www.orcaware.com/svn/wiki/Automatic_lock-modify-unlock – bahrep

2

Похоже, что TFS продолжила использовать эксклюзивную блокировку VSS. Переход на более разумную модель, используемую современными VCS, может занять некоторое время.

Subversion использует copy-modify-merge model. Он позволяет нескольким людям работать в одном и том же файле одновременно, и любые конфликтующие изменения затем объединяются двумя пользователями, когда второй совершает свои изменения в репозитории.

Это может показаться контр-интуитивным, но это намного лучше, чем эксклюзивная блокировка, к которой вы привыкли. В эксклюзивной модели блокировки, если мне нужно отредактировать строки 1-20 файла, я должен подождать, пока вы закончите с линиями 500-600, прежде чем я смогу что-либо сделать. Если вы отправитесь в отпуск на 2 недели, оставив этот файл заблокированным, я полностью застрял.

Если вы не можете отпустить эксклюзивную модель блокировки (которая в целом замедлит вас), используйте атрибут svn:needs-lock для всех ваших файлов.Это будет отмечать файлы как доступные только для чтения в рабочей копии каждого пользователя, заставляя их acquire a lock выполнять любую работу (или перейти к их файловой системе и отключить атрибут только для чтения).

Пункт блокировки в Subversion не должен обеспечивать герметичность управления; напротив, существует несколько (простых) способов, если вы не предпримете дополнительные шаги на сервере. Скорее, точка блокировки Subversion заключается в том, чтобы заставить разработчиков разговаривать друг с другом о потенциальных конфликтах до. Но Subversion обрабатывает большинство конфликтов в текстовых файлах (исходный код) прилично, поэтому даже если у вас есть конфликты, они не слишком обременительны, чтобы разгадать.

+1

Subversion не использует любую модель из коробки. Его администратор, который решает, какая модель должна использоваться. – bahrep

+1

Согласно [официальной книге] (http://svnbook.red-bean.com/en/1.7/svn.basic.version-control-basics.html#svn.basic.vsn-models.copy-merge), SVN использует copy-modify-merge по умолчанию (вернее, как поведение при отсутствии блокировки, выполняемой администратором). – alroc

+1

Это «прежде всего» copy-modify-merge vcs, но не ограничиваясь им. Читая ваш ответ, похоже, что SVN не поддерживает блокировку. – bahrep