Можно ли объединить ствол и ветвь без вытягивания источника с помощью Tortoise SVN? - PullRequest
0 голосов
/ 27 октября 2010

У меня есть недавний источник в ветке, содержащий некоторые функции. Я хочу объединить их с источником ствола.

1) Я не могу получить источник локально. Потому что мне нужно объединить более 30 источников в разных местах.
2) Я не могу удалить местоположение магистрального источника и переместить источники ответвления, используя параметр Copy To.

Итак, я просто хочу объединить источники, указав только местоположение источника и цели, не вытягивая источник локально. Или есть какой-нибудь автоматизированный способ?

Я видел много сообщений в SO, связанных с этим. Никто из них не обращается к контексту, который я ищу.

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Как указано в этой статье tortise svn

... merging always takes place within a working copy.

Вы можете использовать svn merge --accept theirs-full URL1 URL2 WCPATH для разрешения всех конфликтов с версией по заданному URL.

Источники, удаленные с помощью svn delete, останутся частью истории.

2 голосов
/ 27 октября 2010

Не думаю, что это возможно, но это хорошо.Вы действительно хотите бездумное, автоматическое объединение всех этих источников (законченное коммитом)?Смысл слияния в локальной копии состоит в том, что вы можете проверить все это и разрешить все конфликты, которые вы получите, если у вас есть изменения в одном месте в нескольких ветвях ....

1 голос
/ 27 октября 2010

Нет, то, что вы спрашиваете, невозможно.Слияние происходит в вашей рабочей копии.Есть несколько причин, по которым это хорошая идея, чтобы сохранить это таким образом:

  • Могут возникнуть конфликты, с которыми необходимо разобраться.
  • Пользователи обычно создают и тестируют перед фиксацией нового кодаи должен делать это и после слияния.
  • Если слияние не удается или вы делаете что-то глупое, вы ничего не испортили, пока не сделаете коммит.

Если вынужно объединить более 30 источников, ваш лучший выбор - автоматизировать работу с помощью клиента командной строки.Вот как я это сделаю (в bash вы должны будете перевести его на .bat или что-то еще, с чем вам удобно):

REPOS= \
    http://... \
    http://...

for f in REPO; do
    svn co REPO/target      
    svn merge REPO/source target
    svn commit -m "Merged target into source" target
    rm -r target
done

Советы:

  • Используйте svn help <command>, чтобы увидеть, как вызывать каждую из команд svn.
  • Сначала используйте svn merge --dry-run без svn commit, чтобы убедиться, что вы можете выполнить объединение без каких-либо конфликтов (svn commit не удастсяесли вы сначала не разрешите конфликты).
...