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

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

5.08.2008 09:25:29
Это действительно то, для чего SO? Кто-то задает вопрос, который показывает нулевое исследование, и на него можно получить тривиальный ответ из документации, но все равно получает 3000+ повторений за этот вопрос. Затем они отвечают на свой собственный тривиальный вопрос и получают еще 6000+ повторений.
EML 11.07.2019 11:01:55
@EML Учитывая, что оба сообщения были сделаны одновременно, это самоотверженный ответ, который помогает пользователям избавиться от всех проблем, увеличивает трафик в случае популярных вопросов и помогает делать канонические ответы. Можно также изучить намерения SE для документации на meta.SE.
ankii 3.10.2019 17:03:03
10 ОТВЕТОВ
РЕШЕНИЕ

Ветвление в Subversion облегчается очень легким и эффективным средством копирования.

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

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

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

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

347
2.07.2018 18:44:15
«svn copy» имеет то преимущество, что сохраняет историю, предшествующую ветвлению. Копирование в другой каталог вручную не будет.
WhyNotHugo 11.03.2010 19:37:29
Также обратите внимание, что обычно плохая идея помечать или разветвлять подкаталоги «trunk». Это затрудняет отслеживание того, какой подкаталог был разветвлен, и большинство инструментов будут смущены этими ветвями (например, переключение ветвей будет означать структуру каталогов изменений WC, что приведет к путанице в IDE и инструментах сборки). Просто всегда ветка "ствол".
sleske 22.04.2013 21:42:39
@Will На самом деле svn cpиспользует дешевые копии, он не копирует реальные файлы во время ветвления. См. Svnbook.red-bean.com/en/1.1/ch04s02.html
Walty Yeung 20.03.2018 07:15:35

Создайте новую ветку, используя 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"
606
13.09.2018 22:46:58
Затем используйте 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(если вы хотите иметь новую ветку в отдельном каталоге), чтобы начать работу над вновь созданной веткой.
Jakub Narębski 14.10.2012 18:45:48
Примечание: в некоторых случаях вам необходимо использовать--parentsопцию сsvn copy!
Jakub Narębski 15.10.2012 05:54:57
По какой-то причине я использовал этот cmd, и он не работал, но когда я изменил svn + ssh на https, он заработал. Я сделал что-то не так? в чем смысл svn + ssh? Спасибо!
Aviel Gross 22.08.2013 07:31:16
сначала вы должны создать новый каталог в своей ветке -> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "сделать каталог ветвей, в котором будут храниться все ветви"
Silvio Troia 28.04.2015 11:04:18
Если я опускаю -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 по какой-то причине слил в ошибку) .
Hi-Angel 29.06.2016 12:45:21

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

Вот несколько советов о том, как настроить макет хранилища .

14
5.08.2008 12:40:31

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

Svnmerge.py

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

11
28.01.2013 04:33:56

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

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
16
1.02.2016 21:37:29
svn cp /trunk/ /branch/NEW_Branch

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

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
26
3.09.2013 09:14:12
Нет необходимости использовать rsyncтаким образом. svn cpтакже скопирует любые локальные изменения.
Kevin Panko 2.09.2015 16:02:11
@KevinPanko Он не будет копировать незафиксированные изменения.
Parag Bafna 3.09.2015 04:05:11
Это подтверждается svn, версия 1.8.5
Kevin Panko 3.09.2015 13:33:55
Мне интересно об этом. Это кажется самым простым вариантом, и AFAI помнит, это то, что я делал, когда работал с SVN 3 года назад. Но в чем разница между этим и теми, которые работают непосредственно с URL-адресами сервера?
oligofren 24.02.2016 14:50:18
@KevinPanko Знаете ли вы, он также копирует недавно созданные файлы?
John Hamilton 10.05.2019 06:36:43
  • Создайте новую папку за пределами вашего текущего проекта. Вы можете дать ему любое имя. (Пример: у вас есть заказ для проекта с именем «Customization». И у него есть много проектов, таких как «Project1», «Project2» .... И вы хотите создать ветку «Project1». Поэтому сначала откройте » Настройка ", щелкните правой кнопкой мыши и создайте новую папку и присвойте ей имя" Project1Branch ").
  • Щелкните правой кнопкой мыши на «Myproject1» .... TortoiseSVN -> Branch / Tag.
  • Выберите рабочую копию.
  • Откройте браузер .... Прямо справа от "To URL".
  • Выберите настройки ..... щелкните правой кнопкой мыши, затем выберите Добавить папку. и перейдите в папку, которую вы создали. Вот это «Project1Branch». Теперь нажмите кнопку ОК, чтобы добавить.
  • Оформить заказ этого нового отделения.
  • Снова зайдите в ваш проект, какую ветку вы хотите создать. Щелкните правой кнопкой мыши TorotoiseSVN -> ветка / тег. Затем выберите рабочую копию. И вы можете дать URL-адрес в качестве названия вашей ветви. как {ваш IP-адрес / svn / AAAA / настройка / Project1Branch}. И вы можете установить имя в URL, чтобы он создавал папку только с этим именем. Нравится {Ваш IP-адрес / svn / AAAA / Настройка / Project1Branch / MyProject1Branch}.
  • Нажмите кнопку ОК. Теперь вы можете видеть логи в ... ваша рабочая копия будет храниться в вашей ветке.
  • Теперь вы можете пройти проверку ... и позволить вам наслаждаться своей работой. :)
6
1.02.2016 21:41:15

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

Запустите svn infoдля отображения полезной информации о текущей извлеченной ветке.

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

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

svn switch http://my.repo.url/myrepo/branches/newBranchName
13
1.02.2016 21:43:38
Вы также можете использовать ^ вместо корня репозитория
chim 17.03.2015 16:06:51

Если ваше репо доступно через 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"
33
10.02.2016 20:36:21

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

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