Почему я могу создать одну и ту же ветку SVN дважды? - PullRequest
1 голос
/ 02 декабря 2008

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

Ответы [ 2 ]

10 голосов
/ 02 декабря 2008

С SVN RedBook :

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

Из-за этого механизма копирования ветви Subversion существуют как обычные каталоги файловой системы в хранилище.

Поэтому, когда вы создаете ветку 'patch', вы можете иметь несколько каталогов 'patch' в своем хранилище.

Что может вас смущать, когда вы создаете в одном и том же родительском каталоге «patch» дважды, с другим регистром (Patch и patch), в чувствительной к регистру ОС.


Чтобы лучше ответить на ваш вопрос:

Я надеюсь, что SVN не позволит мне снова создать ту же ветку.

Если вы действительно хотите предотвратить любое «столкновение путей, связанное с регистром», вы можете установить ловушку предварительной фиксации (которая также запускается копией svn ), например этот, из svn tools contrib

case-insensitive.py

  • Обнаруживает новые пути, которые «конфликтуют» с существующими или другими новыми путями.
  • Игнорирует существующие пути, которые уже «конфликтуют»
  • Выход с кодом ошибки и диагностикой на stderr, если обнаружены «столкновения».

С помощью этого хука вы все равно можете создавать несколько веток с одинаковыми именами, но, по крайней мере, не в одном родительском каталоге, с другим регистром.

0 голосов
/ 02 декабря 2008

В SVN ветви (и теги тоже) являются только копиями.

SVN не знает, что такое ветка, она знает только о копиях. Пользователи SVN придают этим копиям значение ветвей, но люди придерживаются только соглашения, а не SVN.

...