Назад | Перейти на главную страницу

Замена каталогов, находящихся под контролем Subversion

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

Поскольку мы не можем заменить эти каталоги напрямую, я пытался придумать способ заменить содержимое этих каталогов (и рекурсивно содержимое всех подкаталогов), но не сами каталоги. Я думаю, что должно быть решение, использующее комбинацию флагов для cp, но я не могу понять, что это за комбинация.

Я смотрел на использование cp -aR каталог / существующий_каталог /, но я не могу использовать потому что меткам времени нельзя доверять для обновлений. У меня нет проблем с заменой всех файлов. Кроме того, я не верю, что завершающая косая черта будет рекурсивно переноситься через подкаталоги.

Буду признателен, если кто-нибудь направит меня в правильном направлении. Спасибо!

Звучит беспорядочно. Subversion расстраивается, когда вы удаляете .svn каталоги.

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

Последовательность должна выглядеть примерно так:

cp -R software/ software-copy/
cd software-copy/
find . -type d -name .svn -delete
./upgrade-script.sh
cd ..
rsync -avtl software-copy/ software/

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