Мы пытаемся обновить установленное программное обеспечение, которое мы контролируем с помощью подрывной деятельности. Инструкции по обновлению программного обеспечения требуют замены нескольких каталогов, в которых есть каталоги .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, если вы хотите провести пробный запуск и посмотреть, что бы можно скопировать, фактически не делая этого.