“Наивные” svn объединяются от ответвления в соединительную линию?

Я использую TortoiseSVN для своего проекта C++ и пытаюсь "повторно интегрировать ответвление" назад в соединительную линию.

Мой случай достаточно прост так, чтобы для каждого файла, который изменился в ответвлении, я хотел бы, чтобы оно полностью перезаписало файл соответствия в соединительной линии. К сожалению, TortoiseSVN более умен, чем я, таким образом, он объединяет каждую пару файлов - приводящий к некоторому непоследовательному коду. Например, некоторые строки кода, которые были удалены в ответвлении, восстанавливаются в объединенной версии.

Там какой-либо путь состоит в том, чтобы вынудить TortoiseSVN использовать наивное поведение слияния перезаписи всех измененных файлов?

Спасибо, Dan

14
задан Danra 28 March 2011 в 09:08
поделиться

5 ответов

Вот как это сделать, просто используя SVN (в файловой системе ничего не происходит):

  1. Проверьте ревизию ствола, из которой вы создали ответвление (а не ревизию HEAD).
  2. Зафиксируйте её в хранилище (это отменяет все последующие изменения в стволе).
  3. Сделайте переименование (ваша рабочая копия ствола теперь должна быть идентична ответвлению).
  4. Зафиксируйте слитый ствол, и всё!
7
ответ дан 1 December 2019 в 16:39
поделиться
  1. обновите до последней версии в ветке
  2. скопируйте все файлы где-нибудь на вашей рабочей станции
  3. переключить ветку на магистраль
  4. перезапись с помощью обычного проводника Windows (перезаписываются только измененные файлы)
  5. commit
0
ответ дан 1 December 2019 в 16:39
поделиться

Небольшое улучшение в ответе webwesen , так как я действительно не вижу простого способа:

  • выполнить svn-экспорт ветки в каком-то каталоге
  • скопируйте все файлы из этого каталога в основной каталог
  • commit
0
ответ дан 1 December 2019 в 16:39
поделиться

Насколько мне известно, в настоящее время это невозможно в svn, поэтому TortoiseSVN не может вам помочь.

Чтобы немного упростить (хорошо, сильно), возьмите в качестве примера команду svn update . Если в вашей рабочей копии есть изменения как также как репозиторий, но без реальных конфликтов, svn update просто объединит изменения репозитория в вашу рабочую копию.

Я не думаю, что есть способ обойти это. Если у вас были реальные конфликты, вы можете использовать параметр командной строки - accept ACTION , чтобы сохранить только локальные изменения (например).Но если вы хотите указать действие принятия для любого файла, измененного как в репозитории, так и в рабочей копии, вам, к сожалению, не повезло.

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

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

Я должен добавить, что вы не можете сделать это с TortoiseSVN, по крайней мере, не очевидно, потому что он не поддерживает - accept , по крайней мере, я не смог найти.

Ну, я сказал , что это было ужасно уродливо. Не пытайтесь делать это дома! (Я, конечно, не знал.)

0
ответ дан 1 December 2019 в 16:39
поделиться

Для этой цели разработана команда «svn merge», которая позволит вам выполнить слияние за один шаг. Инструкции здесь .

-2
ответ дан 1 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: