我在生产环境中有一个大型应用程序,我试图在版本控制下移动。因此,我创建了一个新的 repo 并导入了应用程序,减去了不应受版本控制的各种目录和文件。现在,我需要将已安装的副本结帐(但仍保留额外的文件)。此时,在最新版本的 SVN 中,我只需使用 --force 选项对现有目录进行检查。但可悲的是,我有一个古老的 SVN 版本,从添加 --force 选项之前(并且还不能升级......长篇大论)。
因此,我将应用程序签出到另一个目录,并且想简单地将所有 .svn 目录复制到原始目录中,从而将原始目录变成签出,同时留下额外的文件。现在,也许我只是度过了艰难的一天,错过了一些在普通网站上的东西,但我似乎无法弄清楚这一点。以下是我迄今为止尝试过的方法:
使用 rsync:我似乎无法正确组合 include 和 exclude 指令来递归捕获所有 .svn 目录,但仅此而已。
使用 cp:我想不出一个好方法让它贯穿整个应用程序的所有 .svn 目录。
将 find 与 -exec cp 一起使用:我在找到的文件的路径名的前导部分弄乱了目标路径时遇到了麻烦。我可以使用 -printf '%P' 排除它,但这似乎并没有用于 exec 的 {} 替换。
将 find 与 xargs 一起用于 cp:在发送父目录之前,我遇到了 find 发送子目录的麻烦。不幸的是, find 没有 --breadth 选项。
有什么想法吗?
其他信息:
- 重击 3.0.0.14
- rsync 2.6.3 p28
- cp 5.2.1
- svn 1.3.2