我有一个在生产环境中的大型应用程序,现在想将其移至版本控制下。因此,我创建了一个新的代码库,并导入应用程序,但排除掉不应该受版本控制的各个目录和文件。现在,我需要将已安装的副本变成检出版本(但仍保留额外的文件)。在最近的 SVN 版本中,我会使用 --force 选项,在现有目录上面直接覆盖进行检出。但可悲的是,我有一份古老的 SVN 版本,还没有添加 --force 选项(而且暂时不能升级...长话短说)。
所以,我检出了应用程序到另一个目录,并想要简单地复制所有 .svn 目录到原始目录中,从而将原始目录变成一个检出版本,同时保留额外的文件。现在,也许是我今天状态不佳,错过了一些很明显的东西,但我似乎无法弄清楚这个问题。以下是我尝试了的方法:
其他信息:
所以,我检出了应用程序到另一个目录,并想要简单地复制所有 .svn 目录到原始目录中,从而将原始目录变成一个检出版本,同时保留额外的文件。现在,也许是我今天状态不佳,错过了一些很明显的东西,但我似乎无法弄清楚这个问题。以下是我尝试了的方法:
- 使用 rsync:我无法找到正确的组合方式来递归捕获所有的 .svn 目录,但不包括其他任何内容。
- 使用 cp:我无法找到一个好的方法来命中整个应用程序中所有的 .svn 目录。
- 使用带有-exec cp的find:我遇到了一些麻烦,发现找到的文件的路径前缀会弄乱目标路径。我可以使用 -printf'%P' 来排除它,但似乎无法用 {} 替换 exec 中的参数。
- 使用 find 和 xargs 来进行复制:我遇到了问题,发现 find 会在发送父级目录之前先发送子目录。不幸的是,find 没有 --breadth 选项。
其他信息:
- bash 3.0.0.14
- rsync 2.6.3 p28
- cp 5.2.1
- svn 1.3.2