Який найпростіший спосіб зробити розгалуження та об’єднання за допомогою TortoiseSVN?


Відповіді:


185

Припустимо, що ваш робочий каталог працює із зовнішньої лінії:

Клацніть правою кнопкою миші на "кореневій робочій папці" (цей термін завжди відноситься до Провідника Windows) і виконайте необхідні дії, svn updateщоб оновити робочу папку до останнього стовбура.

Переконайтесь, що те, що у вас є, є стабільним.

Клацніть правою кнопкою миші на кореневій робочій папці та виконайте, svn commitщоб переконатися, що будь-які локальні зміни внесені в магістраль.

Клацніть правою кнопкою миші на кореневій робочій папці і виконайте svn repo-browser.

Якщо у вас ще немає папки гілок у сховищі: клацніть правою кнопкою миші папку безпосередньо над папкою магістралі та виконайте "створення папки" та створіть папку гілок (наприклад, якщо ваш магістраль є http://myserver/svn/MyRepository/MyProj/Trunk, створіть http://myserver/svn/MyRepository/MyProj/Branches).

Клацніть правою кнопкою миші на папці стовбура та виконайте Copy To:та введіть нову назву папки для вашої гілки. Наприклад: http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch. (Не хвилюйтеся, що це витратить багато місця ... це називається "дешевою копією" ... Насправді вміст файлів не копіюється, якщо вони не змінюються).

Закрийте браузер Repo.

Клацніть правою кнопкою миші корінь робочої папки та виконайте: svn switchі виберіть назву папки нової гілки (наприклад, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch). Все інше залиште за замовчуванням.

Тепер попрацюйте над своєю гілкою. Коли ви дійдете до етапів, клацніть правою кнопкою миші на кореневій робочій папці та виконайте svn commitфіксацію до своєї гілки. (Це не буде видно в багажнику).

Якщо інші працюють над однією гілкою, періодично виконуйте це svn updateз кореневої робочої папки. Це оновиться з гілки. (Він не буде отримувати жодних оновлень від магістралі.)

Незалежно від того, працюють інші на тій самій гілці, вам слід періодично об’єднувати зміни із стовбура, щоб переконатися, що ваша гілка не буде занадто складною для інтеграції пізніше. Щоб виконати періодичне злиття: клацніть правою кнопкою миші на корені робочої папки та виконайте svn merge. Виберіть "Об'єднати діапазон редакцій". У розділі "URL-адреса для об’єднання" виберіть зовнішню лінію (наприклад, http://myserver/svn/MyRepository/MyProj/Trunk). Залиште діапазон редагувань порожнім, а все інше залиште в спокої. Натисніть Далі. Залиште все в спокої і натисніть Злити . Переконайтесь, що все ще працює ... виправте, якщо ні. Після того, як ви переконаєтесь, виконайте звичайну дію svn updateз кореневої папки для оновлення з гілки (це необхідно, навіть якщо ви єдиний, хто працює у гілці, щоб задовольнити SVN). Тоді зробітьsvn commitщоб зафіксувати об'єднані зміни стовбура у гілці. Ви можете повторювати цей крок періодично скільки завгодно разів.

Як тільки ваша гілка буде готова до інтеграції, виконайте наведений вище крок востаннє та проведіть остаточне тестування. Зробіть остаточний комітет у відділенні.

Клацніть правою кнопкою миші на вашій кореневій робочій папці та виконайте іншу svn switch, на цей раз переключившись на магістраль (наприклад, http://myserver/svn/MyRepository/MyProj/Trunk). Це призведе до фактичного "скасування" всієї роботи, яку ви зробили у вашій гілці, але не хвилюйтеся ... Ви повернете свою роботу. (Він також повідомить про багато оновлень файлів, які ви не змінили у своїй гілці, але це лише зміни "властивості SVN" ... не турбуйтеся про них.)

Клацніть правою кнопкою миші на робочій папці і виконайте svn merge. Цього разу виберіть «Інтегрувати філію». Для URL-адреси розмістіть у своєму відділенні (наприклад, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch). Залиште решту і натисніть Далі. Залиште все в спокої і натисніть Злити . Тепер у вас є вся робота, яку ви зробили у своїй гілці, а також сучасна робота з магістралі.

Зробіть остаточний тест. Все повинно працювати, тому що це повинен бути той самий набір файлів, який ви мали під час останнього тестування у гілці. Клацніть правою кнопкою миші на кореневій робочій папці та виконайте svn commit. Зафіксуйте все, навіть файли, над якими ви не працювали у своїй гілці (вони просто змінюють "властивість SVN", але їх фіксація допомагає SVN відстежувати всі зміни).

Зараз у магістралі є всі роботи у вашій гілці, а також вся робота, яка була виконана в магістралі під час роботи над філією, і все це працює. Крім того, SVN має повну історію всіх файлів, навіть версій, які були зареєстровані під час роботи над вашою гілкою.

Необов’язково: зайдіть у браузер Repo, клацніть правою кнопкою миші на вашій папці гілки (наприклад, http://myserver/svn/MyRepository/MyProj/Branches/MyNewBranch) і виконайте "видалення". Це не вплине на стовбур, і гілка вам більше не потрібна. (Навіть якщо ви справді параноїк, не хвилюйтеся, адже ви навіть можете будь-коли повернути свою видалену гілку з браузера Repo, якщо вам це потрібно.)

Будь ласка, сміливо коментуйте!


37
Я сказав "найпростіший", не "простий" :)
JoelFan

1
Дякую! Ви були першим, хто насправді подякував мені (хоча були і "за", і "улюблені" :)
JoelFan,

Чи правильно, що після того, як ви повторно інтегрували гілку в стовбур, ви більше не можете виконувати роботу з цією гілкою? Оскільки він не буде відстежувати зміни, і ви більше не зможете об'єднуватися в / з цієї гілки?
Водоспад Майкл

1
Наскільки я розумію, об’єднання не буде працювати більше одного разу з однієї гілки.
JoelFan

1
Це дійсно дуже корисно
Avil
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.