2008-12-02 111 views
3

我在一个项目中管理一个svn repo,其中源不是用一个顶级目录导入的。因此,大约有15个独立的“项目”而不是一个。如何将这些文件合并到一个文件夹中,同时保留更改历史记录?合并多个SVN项目

*提示:在这种情况下,svn move不起作用。

[编辑] 哎呦,的Combining multiple SVN repositories into one

+0

也看到这个问题:http://stackoverflow.com/questions/267256/combining-multiple-svn-repositories-into-one – nickf 2008-12-02 03:29:55

+0

谢谢,在问题中指出。 – 2008-12-02 03:42:40

回答

2

如果你不关心保留库之一的所有的历史,你可以创建下一个项目的存储库的新目录重复数据删除,然后导入其他。

如果您关心保留两者的历史记录,那么您可以使用'svnadmin dump'转储一个存储库,'svnadmin load'将其加载到另一个存储库。版本号将关闭,但您仍然可以看到历史记录。

从这里复制:http://subversion.tigris.org/faq.html#multi-merge

2

也许我已经工作了太多与分布式版本控制锤和所有我在这一点上看到分布指甲。但我再一次不得不说,这可能是DVCS的一项工作。

我会尝试用git-svn或类似的东西搞乱。将每个“项目”导入到它自己的git仓库中,并将它们从另一个仓库中拉出来。解决所有冲突,并在完成所有事情后,将历史记录导入到Subversion中。

但你的团队可能会更好只使用分布式控制完成反正合并所有回购后...

0

你可以创建一个使用SVN一个新的顶级项目:外部组件指向所有其他项目并将其放置在适当的子目录中。

  • 开发者只需要看看你的新顶级项目(SVN会自动跟随的svn:外部组件,并在别人拉)
  • 完整版的历史将被保留,新的变化将是自动承诺到相关子项目
  • 它需要约5分钟才能实施(创建新的顶级项目并运行svn propedit svn:externals top_dir)。