2010-03-16 67 views
5

我将第三方项目提交到我自己的svn仓库中。现在,我得到了该项目的新版本,并希望将其替换到我的存储库中。将未版本控制的目录结构合并到SVN仓库中

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

平凡解是

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

不过,我失去了历史的一切。此外,svn服务器将无法使用增量压缩(是的,服务器空间确实很重要)。

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

提交新版本的其他可能性有哪些?这是一个不寻常的用例,因此没有内置的支持吗? (带乌龟SVN我倒是惹.svn文件夹左右,龟提供删除丢失在提交对话框的文件/文件夹,但在命令行版本的拒绝承诺如果遇到文件/文件夹使用svn rm未删除)

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

额外2:我替换为目的地的复制所有符号链接(为了摆脱special status changed错误的)。如何避免这种情况?

额外3:如何应对重命名的文件/目录?由于我只是在没有更改历史的情况下获得新版本,因此无法自动确定这些新版本。 svn mv提交之前?

回答

5

fs2svn工具,是svn2svn的一部分,可以帮助您查找所需的基础知识。从this post开始。

+0

谢谢!然而,与此同时,我切换到允许这种更新的'git'('git -A') – Meinersbur 2010-11-03 19:30:24

+0

svn2svn专门用于windows(OP在UNIX上要求一个工具)。 – 2011-04-20 06:06:27