有一个干净的方式来移动/ /树干?
我犯了一个错误,创build一个Subversion版本库,而没有通常的trunk
, branches
和tags
目录。 也就是说,项目的根目录映射到存储库的根目录。 现在我想创build一个function分支,但是没有好的地方可以放置它。 我想要做的是移动到/trunk
,保留其属性和历史。 我运气不好吗?
干净的方法是使用svnadmin
来转储出整个存储库
svnadmin dump
然后创build一个新的存储库,在根目录下有trunk目录,然后重新加载转储
svnadmin load --parent-dir trunk
如果您执行svn移动,那么如果您在移动之前更新回修订版本,那么这将会使事情变得糟糕,因为这些文件将移回到之前的位置,这可能不是您想要的。
使用它的答案 ,这工作得很好,但想添加包括参数,即在svn服务器的命令行上执行的命令:
-
将现有的存储库转储到一个文件中:
svnadmin dump /path/to/myrepo/ > /some/dir/myproject.svndump
-
创build一个新的存储库:
svnadmin create /path/to/mynewrepo/
-
添加
trunk/
文件夹并将其提交 到工作副本目录中 :mkdir trunk; svn add trunk; svn commit trunk -m "Add: trunk folder"
-
使用
trunk
作为parent-dir
将转储文件加载到新的存储库中:svnadmin load --parent-dir trunk /path/to/mynewrepo/ < /some/dir/myproject.svndump
您需要创build/trunk
然后执行/trunk
中所有内容的svn移动,然后进行提交。
之后,你会把你的工作副本switch
到/trunk
。
最简单的方法是创build一个“主干”目录,然后将其他所有内容移动到其中。 你将不得不手动复制任何属性,但它不应该是一个大问题。 历史是每个文件,所以它应该保持。
另一个需要考虑的问题是是否有其他人打开存储库。 这将是很难合并,所以确保每个人都有他们的变化检查之前,你这样做。
你不能只是创build树干目录,并将一切从/到干线?
正如其他答案指出的,只是做一个SVN到主干目录将做到这一点。 要更新您的工作副本,请查看svn switch命令。
不,只是创build一个trunk
文件夹,并将根的所有内容移动到它。 你可以从资源pipe理器或通过回购浏览器来完成,历史将会持续。
一些讨论的方法有一些缺陷或限制。 下面的post讨论了另一种方法,包括转储回购和编辑文件path。 这有好处,移动的文件也将被正确修改。
http://dotslashstar.blogspot.com/2011/06/svn-hack-insert-missing-trunk-root.html
我是如何做到这一点的快速例子。
我想将file:///svn/myRepo
到file:///svn/myRepo/trunk
cd / svnadmin dump /svn/myRepo > my.dump killall svnserve sudo rm -r -f /svn/myRepo svnadmin create /svn/myRepo svnserve -d -r /svn svn mkdir file:///svn/myRepo/trunk -m "Created trunk dir" svnadmin load /svn/myRepo --parent-dir trunk < my.dump