Как мне создать ветку?

Как мне создать ветку в SVN?


person sparkes    schedule 05.08.2008    source источник


Ответы (10)


Разветвлению в Subversion способствует очень легкая и эффективная функция копирования.

Ветвление и тегирование практически одинаковы. Просто скопируйте всю папку из репозитория в другое место репозитория с помощью команды svn copy.

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

Общие стили должны иметь группу папок в верхней части вашего репозитория с именами tags, branches, trunk и т. Д., Что позволяет вам копировать все ваши trunk (или подмножества) в папки tags и / или branches. Если у вас несколько проектов, возможно, вы захотите воспроизвести такую ​​структуру для каждого проекта:

Чтобы привыкнуть к этой концепции, может потребоваться некоторое время, но она работает - просто убедитесь, что вы (и ваша команда) четко понимаете соглашения, которые вы собираетесь использовать. Также неплохо иметь хорошее соглашение об именах - что-то, что говорит вам, почему ветка / тег была создана и подходит ли она по-прежнему, - подумайте о способах архивирования устаревших ветвей.

person Ronnie    schedule 05.08.2008
comment
svn copy имеет то преимущество, что сохраняет историю до ветвления. Копирование в другой каталог вручную не будет. - person WhyNotHugo; 11.03.2010
comment
Также обратите внимание, что обычно плохая идея помечать подкаталоги транка или разветвлять их. Это затрудняет отслеживание того, какой подкаталог был разветвлен, и большинство инструментов запутаются в этих ветвях (например, переключение ветвей будет означать изменение структуры каталогов WC, что запутает IDE и инструменты сборки). Просто всегда ветвь ствола. - person sleske; 23.04.2013
comment
@Will На самом деле svn cp использует дешевые копии, он не копирует реальные файлы во время ветвления. См. svnbook.red-bean.com/en/1.1/ch04s02.html - person Walty Yeung; 20.03.2018

Создайте новую ветку с помощью команды svn copy следующим образом:

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"
person sparkes    schedule 05.08.2008
comment
Затем используйте svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH . (если вы хотите переключить текущую проверку на новую ветку) или svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH (если вы хотите иметь новую ветку в отдельном каталоге), чтобы начать работу над вновь созданной веткой. - person Jakub Narębski; 14.10.2012
comment
Примечание: в некоторых случаях вам может потребоваться использовать параметр --parents с svn copy! - person Jakub Narębski; 15.10.2012
comment
по какой-то причине я использовал этот cmd, и он не работал, но когда я изменил svn + ssh на просто https, он сработал. Я что-то не так сделал? в чем смысл svn + ssh? Спасибо! - person Aviel Gross; 22.08.2013
comment
сначала вам нужно создать новый каталог в своей ветке - ›svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m сделать каталог ветвей для хранения всех ветвей - person Silvio Troia; 28.04.2015
comment
Если я опущу параметр -m, он будет выглядеть как svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist. С -m он говорит svn: E205009: Local, non-commit operations do not take a log message or revision properties. (Я заменил адреса, но они существуют, за исключением, конечно, нового каталога ветки и всего пути + url, который SVN по какой-то причине слил с ошибкой). - person Hi-Angel; 29.06.2016
comment
Хорошо, ответ ниже сработал. Поскольку, я полагаю, svn cp == svn copy, часть svn+ssh в этом ответе неверна, он не работает (вызывает указанную выше ошибку ↑). - person Hi-Angel; 29.06.2016

Если ваше репо доступно через https, вы можете использовать эту команду для перехода ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"
person Dave    schedule 10.02.2016

svn cp /trunk/ /branch/NEW_Branch

Если у вас есть некоторые локальные изменения в стволе, используйте Rsync для синхронизации изменений.

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
person Parag Bafna    schedule 03.09.2013
comment
Нет необходимости использовать rsync таким образом. svn cp также скопирует любые локальные изменения. - person Kevin Panko; 02.09.2015
comment
@KevinPanko Не будет копировать незафиксированные изменения. - person Parag Bafna; 03.09.2015
comment
Есть, подтверждено svn, версия 1.8.5 - person Kevin Panko; 03.09.2015
comment
Мне интересно об этом. Это кажется самым простым вариантом, и, насколько мне известно, это то, что я делал, когда работал с SVN 3 года назад. Но в чем разница между этим и теми, которые работают напрямую с URL-адресами сервера? - person oligofren; 24.02.2016
comment
@KevinPanko Знаете ли вы, копирует ли он также и вновь созданные файлы? - person John Hamilton; 10.05.2019

Предположим, вы хотите создать ветку из имени ствола (как «ТЕСТ»), затем используйте:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
person Chamly Idunil    schedule 23.07.2013

Главный совет для новых пользователей SVN; это может немного помочь в быстром получении правильных URL-адресов.

Запустите svn info, чтобы отобразить полезную информацию о текущей извлеченной ветви.

URL-адрес должен (если вы запустите svn в корневой папке) предоставить вам URL-адрес, с которого вам нужно скопировать.

Также, чтобы переключиться на только что созданную ветку, используйте команду svn switch:

svn switch http://my.repo.url/myrepo/branches/newBranchName
person chim    schedule 28.03.2014
comment
Вы также можете использовать ^ вместо корня репозитория - person chim; 17.03.2015

Обычно вы копируете его в svn + ssh: //host.example.com/repos/project/branches/mybranch, чтобы вы могли сохранить несколько веток в репозитории, но ваш синтаксис действителен.

Вот несколько советов по как настроить макет репозитория.

person pix0r    schedule 05.08.2008

Если вы даже планируете объединить свою ветку, я настоятельно рекомендую вам взглянуть на это:

Svnmerge.py

Я слышал, что Subversion 1.5 расширяет возможности отслеживания слияния, но у меня нет в этом опыта. Мой проект находится на 1.4.x, а svnmerge.py спасает жизнь!

person basszero    schedule 05.08.2008

  • Создайте новую папку вне вашего текущего проекта. Вы можете дать ему любое имя. (Пример: у вас есть касса для проекта под названием «Настройка». И в нем много проектов, таких как «Project1», «Project2» .... И вы хотите создать ветвь «Project1». Итак, сначала откройте « Настройка », щелкните правой кнопкой мыши и создайте новую папку с именем« Project1Branch »).
  • Щелкните правой кнопкой мыши "Myproject1" .... TortoiseSVN -> Branch / Tag.
  • Выберите рабочую копию.
  • Откройте браузер .... Как раз справа от параллели по "To URL".
  • Выберите настройку ..... щелкните правой кнопкой мыши, затем «Добавить папку». и пройдите по созданной вами папке. Вот он «Project1Branch». Теперь нажмите кнопку ОК, чтобы добавить.
  • Возьмите кассу на этой новой банке.
  • Снова перейдите в свой проект, ветку которой вы хотите создать. Щелкните правой кнопкой мыши TorotoiseSVN -> ветка / тег. Затем выберите рабочую копию. И вы можете указать URL-адрес в качестве имени вашей ветки. например {ваш IP-адрес / svn / AAAA / Customization / Project1Branch}. И вы можете установить имя в URL-адресе, чтобы папка создавалась только с этим именем. Например, {Ваш IP-адрес / svn / AAAA / Customization / Project1Branch / MyProject1Branch}.
  • Нажмите кнопку ОК. Теперь вы можете видеть логи ... ваша рабочая копия будет храниться в вашей ветке.
  • Теперь вы можете оформить заказ ... и позволить вам наслаждаться своей работой. :)
person Sonu Gupta    schedule 05.02.2014

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

  1. Щелкните правой кнопкой мыши обновленную магистраль с локальной машины Windows
  2. Выберите TortoiseSVN
  3. Нажмите ветку / тег
  4. Выберите путь «Кому» в репозитории SVN. Обратите внимание, что целевой URL обновляется в соответствии с указанным путем и именем ветки.
  5. Не создавайте папки внутри веток в браузере репозитория
  6. Добавить путь веток. Например, филиалы /
  7. Добавьте содержательное сообщение журнала для вашей справки
  8. Нажмите ОК, это создаст новую папку в локальной системе.
  9. Оформить заказ ветку, созданную в новую папку
person Prashanth    schedule 27.03.2020