Как заменить каталоги в рабочей копии, не уничтожая метаданные SVN - PullRequest
2 голосов
/ 17 ноября 2011

Если у меня есть рабочая копия svn и я хочу обновить рабочую копию новой версией этих файлов, я просто копирую новые файлы поверх старых файлов, и проблем нет. Svn распознает различия между файлами. (Я использую SVN 1.6)

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

Есть ли способ заставить это работать, чтобы я мог легко обновлять файлы, либо используя команду cp Linux, либо перетаскивая файлы в существующие местоположения в Eclipse. В противном случае мне нужно было бы написать какой-нибудь собственный скрипт, чтобы копировать только каждый файл, создавая родительские каталоги по мере необходимости. Это похоже на боль, поэтому я надеюсь, что есть более простой способ. (Я был бы удивлен, если бы я был единственным, кто нуждается в таком использовании.)

Ответы [ 2 ]

0 голосов
/ 29 января 2014

Использовать rsync:

rsync -av --exclude=".*" origin_dir dest_dir_with_svn
0 голосов
/ 17 ноября 2011

Вы можете использовать опцию -u cp:

-u, --update копировать только в том случае, если файл SOURCE новее файла назначения или отсутствует файл назначения

Таким образом, в вашем случае cp -ur /new/repository/* /old/repository/ будет переопределять только существующие файлы, а не стирать каталоги .svn.

Если вы хотите, вы также можете использовать rsync .

Основным преимуществом rsync является копирование только минимальной разницы между обновленными файлами, чтобы избежать перегрузок по сети, но при локальном копировании вы не сильно увеличите производительность (стоимость различий будет уравновешивать выигрыш во время копирования) .

...