我有一个Subversion存储库,里面有几个项目。我想“切掉”一个或多个项目并将它们移动到自己的存储库中,理想情况下是完全保真(即保持所有版本历史记录完整)。
这甚至可能吗?如果是这样,技术是什么?
编辑/澄清:我知道分支和标签。那不是我要问的。我想采用现有的存储库并将其拆分为几个较小的存储库,可能在不同的物理介质上。
答案 0 :(得分:2)
首先获取SVN存储库的最新转储:
svnadmin dump repo/
接下来,使用类似
的内容过滤存储库svndumpfilter include --drop-empty-revs --renumber-revs trunk/myProj1 trunk/myProj2
然后,创建新的repo,并添加trunk,tags和branches目录(此后的步骤将在没有这3个dirs的情况下失败):
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