SVN: номера ревизий в ветке

Есть пара моментов о нумерации ревизий SVN в ветке, которые мне непонятны:

  1. Когда я создаю ветку, получает ли ветка свой собственный номер версии?
  2. Как SVN обрабатывает нумерацию ревизий в ветке? Имеет ли ветвь свою собственную последовательность номеров ревизий, отдельную от магистрали и других ветвей? Или для всего сервера SVN используется только одна порядковая нумерация? Чтобы уточнить, объясните, что происходит, когда фиксация выполняется в ветке.

person user1888243    schedule 20.09.2013    source источник


Ответы (2)


Когда я создаю ветку, получает ли ветка свой собственный номер версии?

Нет. Для всего репозитория существует только один глобальный номер версии.

Коммит, создающий ветку, получит номер ревизии.

Чтобы уточнить, объясните, что происходит, когда фиксация выполняется в ветке.

Сама Subversion не имеет особой поддержки или понимания веток. Это все соглашения, основанные на том, как размещать файлы в структуре каталогов.

Таким образом, нет никакой разницы между фиксацией файла в «стволе» и фиксацией файла в «ветви». Фактически, один и тот же коммит может изменять файлы во многих ветках.

Для внутренней подрывной деятельности нет никакой разницы между созданием ветки и копированием каталога. Мы (как пользователи) просто придаем ему другое значение.

То же самое и с «тегами». Это просто копии вашего кода в определенное время, перемещенные в другой каталог (точно так же, как ветка), которые вы намереваетесь сохранить, никогда не изменяя их снова (но сама Subversion этого не требует).

person Thilo    schedule 20.09.2013
comment
Вы упомянули, что фиксация, создающая ветку, получит номер версии. Вы имеете в виду, что создание самой ветки считается одним коммитом? Но мы не зафиксировали никаких новых файлов, тогда почему это считается фиксацией? - person user1888243; 20.09.2013
comment
Создание ветки означает копирование каталога (обычно транка) в другое место (обычно ветки/foo). Для подрывной деятельности это обычный коммит. Вы даже можете комбинировать его с другими вещами (но это не рекомендуется). - person Thilo; 20.09.2013
comment
Но мы не зафиксировали никаких новых файлов: вы бы создали (как копию существующего файла) много новых файлов, таких как branch/foo/VERSION.txt, branch/foo/src/main/java/x/A .java и т. д. Возможно, вы даже изменили или переупорядочили некоторые из этих файлов, возможно, выставили номер версии здесь или там. - person Thilo; 20.09.2013

  1. да. Номера ревизий принадлежат репозиторию; каждый коммит получает свой номер ревизии.

  2. Ветка — это просто подпапка в репозитории. Он получает номера ревизий, которые уникальны для всего репо, как и для любой другой подпапки. Когда вы фиксируете ветку, она работает точно так же, как и при фиксации в любой другой папке репозитория.

person Blorgbeard    schedule 20.09.2013
comment
Получает ли сама ветка (я имею в виду, когда я создаю ветку) новый номер ревизии? Является ли создание самой ветки фиксацией? - person user1888243; 20.09.2013
comment
Да, создание ветки (копирование папки) является фиксацией и получает номер ревизии. - person Blorgbeard; 20.09.2013