Відповіді:
Розгалуження в 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
. (Я замінив адреси, але вони існують, за винятком ofc, нового каталогу гілок і всього шляху + 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. Для цього, очевидно, потрібно встановити клієнт TortoiseSVN.