我将第三方项目提交到我自己的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
?
答案 0 :(得分:5)
答案 1 :(得分:1)
您可以尝试通过供应商分支然后中继合并将subverion推荐用于合并供应商代码的方法。他们还有一个工具svn_load_dirs.pl,用于帮助上游版本中的添加,删除和移动。
详细信息可在以下网址找到: http://svnbook.red-bean.com/en/1.6/svn.advanced.vendorbr.html