将无版本的目录结构合并到SVN存储库中

时间:2010-03-16 20:41:15

标签: svn unix

我将第三方项目提交到我自己的svn存储库中。现在,我得到了该项目的新版本,我想在我的存储库中替换它。

该项目相当大(1.2GB),新版本有新文件/目录,也删除了文件/目录。

简单的解决方案是

svn rm project
mv /path/to/new/project .
svn add project
svn ci

但是,我放弃了历史。此外,svn服务器将无法使用增量压缩(是的,服务器空间确实很重要)。

另一种方法是覆盖工作目录中的所有文件,然后提交它。但是,已删除的文件仍保留在存储库中。 svn add --force *也“忘记”添加一些文件。

提交新版本的其他可能性有哪些?这是一个不寻常的用例,因此没有内置支持吗? (使用Tortoise SVN我会使用.svn文件夹,Tortoise提供删除提交对话框中丢失的文件/文件夹,但如果遇到未使用{{{{}删除的文件/文件夹,则命令行版本拒绝提交1}})

额外1 :如何避免我的存储库中的更改被覆盖? (只有少数,所以目前可以重新申请)

Extra 2 :我用目标副本替换了所有符号链接(以消除svn rm错误)。怎么避免这个?

额外3 :如何应对重命名的文件/目录?由于我刚刚获得没有更改历史记录的新版本,因此无法自动确定这些版本。提交前special status changed

2 个答案:

答案 0 :(得分:5)

fs2svn工具是svn2svn的一部分,它可以帮助您了解所需内容。从this post开始。

答案 1 :(得分:1)

您可以尝试通过供应商分支然后中继合并将subverion推荐用于合并供应商代码的方法。他们还有一个工具svn_load_dirs.pl,用于帮助上游版本中的添加,删除和移动。

详细信息可在以下网址找到: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html