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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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. Оформить заказ ветку, созданную в новую папку

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