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