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

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

Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
637
0
630 599
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Создайте новую ветку с помощью команды 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"

Затем используйте svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BR‌​ANCH . (если вы хотите переключить текущую проверку на новую ветку) или svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BR‌​ANCH (если вы хотите иметь новую ветку в отдельном каталоге), чтобы начать работу над вновь созданной веткой.

Jakub Narębski 14.10.2012 22:45
Примечание: in some cases you would need to use --parents option with svn copy!
Jakub Narębski 15.10.2012 09:54

По какой-то причине я использовал этот cmd, и он не работал, но когда я изменил svn + ssh на просто https, он сработал. Я что-то не так сделал? в чем смысл svn + ssh? Спасибо!

Aviel Gross 22.08.2013 11:31

Сначала вам нужно создать новый каталог в своей ветке -> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "сделать каталог ветвей для хранения всех веток"

Silvio Troia 28.04.2015 14:04

Если я опущу параметр -m, он будет выглядеть как svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/s‌​vn/dir1/dir2/trunk/d‌​ir3/dir4/dir5' does not exist. В -m написано svn: E205009: Local, non-commit operations do not take a log message or revision properties. (Я заменил адреса, но они существуют, за исключением, ofc, нового каталога ветки и всего пути + url, который SVN по какой-то причине слил в ошибке).

Hi-Angel 29.06.2016 15:45

Хорошо, ответ ниже сработал. Поскольку, я полагаю, svn cp == svn copy, часть svn+ssh в этом ответе неверна, она не работает (вызывает указанную выше ошибку ↑).

Hi-Angel 29.06.2016 15:55

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

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

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

Svnmerge.py

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

Ответ принят как подходящий

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

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

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

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

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

"svn copy" имеет то преимущество, что он сохраняет историю, предшествующую ветвлению. Копирование в другой каталог вручную не будет.

WhyNotHugo 11.03.2010 22:37

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

sleske 23.04.2013 01:42

@Will На самом деле svn cp использует дешевые копии, он действительно нет копирует фактические файлы во время ветвления. См. svnbook.red-bean.com/en/1.1/ch04s02.html

Walty Yeung 20.03.2018 10:15

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

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST

svn cp /trunk/ /branch/NEW_Branch

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

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

Нет необходимости использовать rsync таким образом. svn cp также скопирует любые локальные изменения.

Kevin Panko 02.09.2015 19:02

@KevinPanko Не будет копировать незафиксированные изменения.

Parag Bafna 03.09.2015 07:05

Есть, подтверждено svn, версия 1.8.5

Kevin Panko 03.09.2015 16:33

Мне интересно об этом. Это кажется самым простым вариантом, и, насколько мне известно, это то, что я делал, когда работал с SVN 3 года назад. Но в чем разница между этим и теми, которые работают напрямую с URL-адресами сервера?

oligofren 24.02.2016 17:50

@KevinPanko Знаете ли вы, копирует ли он также и вновь созданные файлы?

John Hamilton 10.05.2019 09:36
  • Создайте новую папку вне вашего текущего проекта. Вы можете дать ему любое имя. (Пример: у вас есть касса для проекта под названием «Настройка». И в нем много проектов, таких как «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}.
  • Нажмите кнопку ОК. Теперь вы можете видеть логи ... ваша рабочая копия будет храниться в вашей ветке.
  • Теперь вы можете оформить заказ ... и позволить вам наслаждаться своей работой. :)

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

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

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

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

svn switch http://my.repo.url/myrepo/branches/newBranchName

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

chim 17.03.2015 19:06

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

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

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

Другие вопросы по теме