2

我有一个Subversion版本库,里面有几个项目。我希望“切断”一个或多个这些项目,并将它们移到自己的存储库,理想情况下具有完全保真度(即保持所有版本历史记录不变)。切片Subversion版本库的一部分?

这甚至可能吗?如果是这样,技术是什么?

编辑/澄清:我了解分支和标签。这不是我要问的。我想采用现有的存储库并将其拆分为几个较小的存储库,可能位于不同的物理介质上。

回答

2

首先得到一个到你的SVN仓库的日期转储:

svnadmin dump repo/ 

接下来,过滤库,使用类似

svndumpfilter include --drop-empty-revs --renumber-revs trunk/myProj1 trunk/myProj2 

然后,创建新的回购,并添加行李箱,标签和分支目录(在没有这三个目录的情况下,此步骤将失败):

svnadmin create newRepo 
svn co file:///tmp/newRepo newRepo-checkout 
svn mkdir newRepo-checkout/trunk/ newRepo-checkout/branches/ newRepo-checkout/tags 
svn commit -m "Core directory structures created" newRepo-checkout/ 

有了这3个目录,一个现在可以加载转储:

svnadmin load newRepo 

一旦加载完成后,就可以开始使用新的回购!

几个教程链接:

http://grumbel.blogspot.com/2008/09/splitting-svn-repository.html
http://2tbsp.com/node/88

+0

是的,但我不认为你已经理解了问题。你的例子展示了如何在同一个repository_中创建一个分支,这根本不是我所要求的。我想采取现有的存储库,并将其拆分为几个较小的存储库(可能位于物理不同的介质上)。 –

+0

嗯,在这种情况下,您希望获得repo的转储,然后使用svndumpfilter仅从repo中获取所需内容,然后使用新的分割repo使用svn load来加载过滤的转储。这里有一些很好的教程:http://grumbel.blogspot.com/2008/09/splitting-svn-repository.html,http://mikemason.ca/blog/2005/10/splitting-merging-and-organizing- a-subversion-repository/ – chown

+0

已更新的答案提供了步骤 – chown