我在生产环境中有一个大型应用程序,我正试图在版本控制下移动。因此,我创建了一个新的repo并导入了应用程序,减去了不应受版本控制的各种目录和文件。现在,我需要将已安装的副本作为结帐(但仍保留额外的文件)。此时,在最新版本的SVN中,我只需使用--force选项在现有目录上进行检查。但遗憾的是,我有一个古老版本的SVN,从之前添加了--force选项(并且还无法升级......长篇故事)。
因此,我将应用程序检出到另一个目录,并希望简单地将所有.svn目录复制到原始目录中,从而将原始文件转换为结帐,同时留下额外的文件。现在,也许我只是度过了艰难的一天,错过了普通网站上的一些东西,但我似乎无法弄清楚这一点。以下是我到目前为止尝试过的方法:
使用rsync:我似乎无法正确组合include和exclude指令来递归捕获所有.svn目录,但没有别的。
使用cp:我无法想出让它在整个应用程序中贯穿所有.svn目录的好方法。
使用find with -exec cp:我遇到了问题,找到的文件的路径名的前导部分弄乱了目标路径。我可以使用-printf'%P'将其排除,但这似乎不会替换为exec的替换。
使用find with xargs to cp:在发送父母之前发现通过子目录发送我遇到了麻烦。不幸的是,find没有--bread选项。
有什么想法吗?
其他信息:
答案 0 :(得分:6)
使用tar并找到以干净的结帐方式捕获.svn目录,然后解压缩到您的应用中。
cd /tmp/
svn co XXX
cd XXX
find . -name .svn -print0 | tar cf /tmp/XXX.tar --null -T -
cd /to/your/app/
tar xf /tmp/XXX.tar
编辑:切换find / tar命令,使NUL终结符在包含空格的文件名面前具有健壮性。原始命令是:
tar cf /tmp/XXX.tar $(find . -name .svn)
答案 1 :(得分:0)
(5)你不能只是到另一个目录结账,然后将额外的文件复制到该目录,在切换到从新目录运行应用程序之前验证一切正常吗?