Справка по слиянию SVN: Создана ветка внутри транка - PullRequest
3 голосов
/ 31 мая 2011

Короче говоря, я по сути создал ветку разработки в нашем стволе.

Примерно две недели назад я решил, что имеет смысл создать отдельную ветку в нашем хранилище, так как мы, наконец, делаемпереключиться на visual studio 2010. Я не прочитал столько книг о подрывной деятельности, сколько должен был.

Вот базовая структура:

REPO/
  Installer/
  Utilities/
  Main/
  Upgrade/
    Installer/
    Utilities/
    Main/

Где обновление - это ветвьсоздано.В Main произошли некоторые модификации, а также множество изменений дерева и файлов в рамках обновления.Какова лучшая стратегия для чистого объединения?
Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Эй, на самом деле это плохая практика - создавать ветку в стволе, но так как это сделано, есть способ объединить код ...

Не объединять целые деревья, а объединятьотдельные папки.
Например;
Если вам нужно объединить ветку обратно в транк,
1. Объедините каталог REPO/Installer с REPO/Installer/Upgrade/Installer

В этом случае возьмителокальная проверка полного дерева в вашей локальной системе, а затем перейдите в каталог назначения (где весь код должен быть объединен), в этом случае REPO/Installer/Upgrade/Installer
Либо используйте TortoiseSVN , либо объедините с помощьюкомандная строка - svn merge <a href="http://svn.example.com/repos/REPO/Installer" rel="nofollow">http://svn.example.com/repos/REPO/Installer</a>

Как только это действие будет завершено, я бы посоветовал вам переместить Филиал в другое место, используя svn move.Это можно сделать безобидно, сохранив при этом всю историю.

3 голосов
/ 31 мая 2011

Вы можете обновить свою ветку несколько раз с изменениями из ствола.И это так же просто, как выполнить команду слияния.

Шаги

  1. Проверить копию для вашей ветви.
  2. Если у вас уже есть копия вашей ветвискачайте, затем убедитесь, что отправили все находящиеся в нем ожидающие элементы.
  3. Обновите ветку до версии ревизии (svn update -r HEAD) только для обеспечения согласованности.
  4. Затем объединитеваши изменения из ствола в вашу ветку:

    svn merge http://svn.example.com/repos/trunk

  5. Выполнение вышеуказанной команды просто загрузит изменения из ствола в вашу песочницу.Там вы можете просмотреть их, разрешить любые конфликты и, когда будете готовы ...

  6. Зафиксируйте изменения в своей ветке.

До этого момента ваша ветвь синхронизирована со стволом.

С другой стороны, , если вы хотите обновить ствол с помощьюмодификации из ветки, тогда надо быть очень осторожным.Это называется реинтеграцией и может быть сделано только один раз.То есть после того, как вы реинтегрируете свою ветвь в ствол, вы больше не сможете запускать этот процесс.

Шаги

  1. Проверьте копию своей ствола.
  2. Если у вас уже есть копия ствола в вашей песочнице, обязательно отправьте все ожидающие изменения.
  3. Синхронизируйте ветку с последними изменениями из ствола, как объяснено в другом рецепте выше.
  4. Убедитесь, что обновление до последней версии головы (svn update -r HEAD).
  5. Затем реинтегрируйте ветвь в ствол:

    svn merge --reintegrate http://svn.example.com/repos/my-branch

  6. Выполнение команды выше просто загрузит изменения в вашу песочницу.Там вы можете просмотреть их, разрешить любые конфликты и, когда будете готовы ...

  7. Зафиксируйте изменения в вашей магистрали.

До этого момента ваш ствол синхронизирован с вашей веткой, но ваша ветвь бесполезна, вы также можете удалить ее.Если вы хотите продолжить работу в ветке, вам придется создать новую ветку по этому вопросу.

Если вы не намерены аннулировать свою ветку, тогда ваше единственное решение - создать файлы исправлений с различиями иубедитесь, что обе кодовые базы равны или скопируйте изменения вручную.

...