我们正试图更新一个我们在颠覆的控制下安装的软件。 软件的更新说明需要replace其中有.svn目录的几个目录。
由于我们不能直接replace这些目录,所以我一直试图想出一种方法来replace这些目录的内容(和recursion的所有子目录的内容),而不是目录本身。 我认为必须有一个解决scheme使用cp标志的组合,但我无法弄清楚这个组合是什么。
我看着使用cp -aR目录/ existing_directory / ,但是我不能使用-a,因为时间戳不会被更新信任。 我没有问题,replace所有的文件。 此外,我不相信递减的斜杠将通过子目录进行。
如果有人能引导我走向正确的方向,我将不胜感激。 谢谢!
这听起来很乱。 当你删除.svn目录时,Subversion会感到不安。
我会这样做的方式是创build一个副本,从副本中删除所有.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选项,如果你想做一个干运行,看看什么会被复制,而没有真正做到这一点。