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

将未版本化的目录结构合并到SVN存储库中,svn,unix,Svn,Unix,我将一个第三方项目提交到我自己的svn存储库中。现在,我得到了该项目的一个新版本,我想在我的存储库中替换它 该项目相当大(1.2GB),新版本有新的文件/目录,还删除了文件/目录 简单的解决方案是 svn rm project mv /path/to/new/project . svn add project svn ci 然而,我失去了一切的历史。此外,svn服务器将无法使用增量压缩(是的,服务器空间很重要) 另一种方法是覆盖工作目录中的所有文件,然后提交。但是,已删除的文件仍保留在存储库中

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

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

简单的解决方案是

svn rm project
mv /path/to/new/project .
svn add project
svn ci
然而,我失去了一切的历史。此外,svn服务器将无法使用增量压缩(是的,服务器空间很重要)

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

提交新版本的其他可能性是什么?这是一个不寻常的用例,因此没有内置支持吗? (使用Ortoise SVN,我会处理
.SVN
文件夹,Ortoise会在提交对话框中删除丢失的文件/文件夹,但如果命令行版本遇到未使用
SVN rm
删除的文件/文件夹,它会拒绝提交)

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

Extra 2:我用目的地的副本替换了所有符号链接(以消除
特殊状态更改
错误)。如何避免这种情况


Extra 3:如何处理重命名的文件/目录?由于我只是在没有更改历史记录的情况下获得新版本,因此无法自动确定这些版本<代码>svn mv在提交之前?

fs2svn工具的一部分完成了您要查找的基本功能。从开始。

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

详情可浏览:

谢谢!然而,与此同时,我切换到了允许这种更新的
git
git-A
)svn2svn是专门针对windows的(OP要求在unix上使用一个工具)。