如何更改subversion存储库的结构?

时间:2008-12-12 03:34:41

标签: svn

我是Subversion的新手,所以如果这是一个愚蠢的问题我现在不知道:

我继承了一个平面结构的subversion存储库,没有/ trunk / tags / branches顶级)。

我想重新构建它,以便它遵循

/trunk
/tags
/branches

的布局。

这可能吗?

5 个答案:

答案 0 :(得分:21)

特别是如果您使用的是Subversion 1.4,请参阅此答案以获取替代方法:

svn: replace trunk with branch

否则,move是实现重组的最简单方法。正如@JoelFan所说,move将对目录起作用,因此您可以在没有工作副本的情况下执行此操作:

svn mkdir --quiet --message "Restructuring" http://svnhost/svnrepos/trunk
svn mkdir --quiet --message "Restructuring" http://svnhost/svnrepos/tags
svn mkdir --quiet --message "Restructuring" http://svnhost/svnrepos/branches

然后,为您的来源提供适当的move命令:

svn move --message "Restructuring" http://svnhost/svnrepos/dir01 http://svnhost/svnrepos/trunk/dir01

注意:如果现有存储库具有如下结构:

/repos
    /projectA
        /branches
        /tags
        /trunk
    /projectB
        /branches
        /tags
        /trunk

我建议保留这种方式 - 如果由于某种原因你需要这样做,它会将项目分成单独的存储库非常简单。

答案 1 :(得分:4)

svn move (1.4) (1.7)可以对存储库中的目录进行操作,因此您不需要签出或签入任何内容。

答案 2 :(得分:4)

如果你使用TortoiseSVN:

  1. 创建空的所需目录(/trunk /tags /branches
  2. 提交他们。
  3. 在上下文菜单中打开TortoiseSVN > Repo-Browser,只需选择所有(/trunk /tags /branches除外)并拖放到/trunk目录(全部在Repo-Browser窗口内)
  4. Pres Ok > Submit > Ok

答案 3 :(得分:1)

是。只需创建所需的顶级结构,使用svn add添加这些目录。签入(svn ci)然后用svn move将东西移动到所需的位置。中间的签到可能甚至没有必要,但这就是我做的方式。

答案 4 :(得分:0)

是。只需使用svn move命令!