Ответы:
Ветвление в Subversion облегчается очень легким и эффективным средством копирования.
Ветвление и пометка фактически одинаковы. Просто скопируйте всю папку в хранилище куда-нибудь в хранилище, используя svn copy
команду.
По сути, это означает, что условно копирование папки означает - будь то резервное копирование, тег, ветвь или что-то еще. В зависимости от того, как вы хотите думать о вещах (обычно в зависимости от того, какой инструмент SCM вы использовали в прошлом), вам нужно настроить структуру папок в вашем хранилище для поддержки вашего стиля.
Общие стили должны иметь кучу папок в верхней части хранилища под названием tags
, branches
, trunk
и т.д. - что позволяет копировать все ваши trunk
(или суб-наборы) в tags
и / или branches
папку. Если у вас более одного проекта, вы можете повторить такую структуру в каждом проекте:
Может потребоваться некоторое время, чтобы привыкнуть к этой концепции - но она работает - просто убедитесь, что вы (и ваша команда) четко понимаете соглашения, которые вы собираетесь использовать. Также неплохо иметь хорошее соглашение об именах - что-то, что говорит вам, почему была сделана ветка / тег и является ли она по-прежнему уместной, - рассмотрите способы архивации ветвей, которые устарели.
svn cp
использует дешевые копии, он не копирует реальные файлы во время ветвления. См. Svnbook.red-bean.com/en/1.1/ch04s02.html
Создайте новую ветку, используя 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_BRANCH .
(если вы хотите переключить текущую проверку на новую ветку) или svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(если вы хотите иметь новую ветку в отдельном каталоге), чтобы начать работу над вновь созданной веткой.
--parents
опцию сsvn copy
!
-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 по какой-то причине слил в ошибку) .
svn cp /trunk/ /branch/NEW_Branch
Если у вас есть некоторые локальные изменения в транке, используйте Rsync
для синхронизации изменений
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
таким образом. svn cp
также скопирует любые локальные изменения.
Предположим, вы хотите создать ветку из имени транка (как «TEST»), а затем использовать:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Обычно вы копируете его в svn + ssh: //host.example.com/repos/project/branches/mybranch, чтобы вы могли сохранить несколько веток в хранилище, но ваш синтаксис действителен.
Вот несколько советов о том, как настроить макет хранилища .
Главный совет для новых пользователей SVN; это может немного помочь с быстрым получением правильных URL.
Запустите svn info
для отображения полезной информации о текущей извлеченной ветке.
URL должен (если вы запускаете svn в корневой папке) дать вам URL, с которого нужно скопировать.
Также, чтобы переключиться на вновь созданную ветку, используйте svn switch
команду:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Если вы даже планируете объединить свою ветку, я настоятельно рекомендую вам взглянуть на это:
Я слышал, что Subversion 1.5 создает больше отслеживания слияний, но у меня нет с этим опыта. Мой проект на 1.4.x и svnmerge.py спасает жизнь!
Ниже приведены шаги по созданию ветви из ствола с использованием TortoiseSVN в Windows Machine. Очевидно, что для этого требуется клиент TortoiseSVN.