替换受 subversion 监控的目录

替换受 subversion 监控的目录

我们正在尝试更新已安装的软件,该软件已由 subversion 控制。该软件的更新说明要求替换其中包含 .svn 目录的几个目录。

由于我们无法直接替换这些目录,我一直在尝试想出一种方法来替换这些目录的内容(以及递归替换所有子目录的内容),而不是替换目录本身。我认为必须有一个解决方案,使用一些标志组合来cp,但我不知道该组合是什么。

我研究过使用cp -aR 目录/现有目录/,但我不能使用-A因为时间戳对于更新来说是不可信的。我可以毫无问题地替换所有文件。另外,我不相信结尾的斜杠会以递归方式穿过子目录。

如果有人能给我指明正确的方向,我将不胜感激。谢谢!

答案1

.svn这听起来很乱。当你删除目录时,Subversion 会变得很乱。

我这样做的方法是创建一个副本,.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 选项无需实际操作即可复制。

相关内容