3

我继承了一组人的颠覆存储库的管理,这是非常糟糕的组织目录结构是这样的:

/root
    /branches
        /branch_1_with_cryptic_name
        /branch_2_with_different_cryptic_name
        /branch_3_with_super_cryptic_name
        ...
        /branch_N_with_another_cryptic_name
    /tags
        /tag_1_with_yet_another_cryptic_name
        /tag_2_with_another_different_cryptic_name
        ...
        /tag_M_with_some_other_cryptic_name
    /trunk
        /project_1
        /project_2
        ...
        /project_K

请注意,分支和标签没有根据它们各自的项目进行组织,因此除非您已经熟悉它,否则无法分辨哪个分支/标签与哪个项目一起使用。

我想通过以下方式重新组织目录结构

/root
    /project_1
        /branches
            /branch_1_with_some_name
            /but_at_least_i_know_which_project
        /tags
            /some_tag_1
            /some_tag_2
        /trunk
    /project_2
        /branches
        /tags
        /trunk
    ...
    /project_K
        /branches
        /tags
        /trunk

此外,我想维护每个文件的历史记录,并允许在每个项目的现有分支和主干之间切换/合并。

我正在使用 tortoise SVN,并尝试在 repo 浏览器中简单地移动目录,但只有在我“忽略祖先”时切换才有效,并且合并导致每个文件都有树冲突。

有一个更好的方法吗?

4

2 回答 2

0

如果我是你,我会忘记切换并使用普通的 ol' svn move,svn rmsvn mkdir实现所需的结构。由于这些命令会跟踪所有文件的历史记录,因此您应该能够合并以前可合并的文件夹。

一种可能的行动方案如下:

  1. 创建project_1project_2使用svn mkdir
  2. 在每个项目目录中,创建tagsbranches目录
  3. 将原始项目目录移动到它们的新位置trunk/
  4. 将原始分支移动到它们各自的新位置project_x/branches/
  5. 将原始标签移动到它们各自的新位置project_x/tags/
于 2013-10-18T19:57:52.157 回答
0

如果你的机器上有完整的仓库(主干 + 分支 + 标签),你可以使用 Tortoise SVN 移动它们。这不是很明显(我知道我必须努力寻找)。

选择文件夹并像往常一样使用 Ctrl-C/Ctrl-X 或上下文菜单->复制/剪切来复制或剪切它们。转到目标文件夹,然后右键单击 Context Menu -> TortoiseSVN -> Paste。你不敢使用普通的粘贴(但我相信你知道这一点)。

替代方法:选择要移动的文件夹,然后像处理任何文件一样通过右键单击它们来移动它们。松开鼠标右键,选择 SVN Move/Copy versioned files here。

这应该可以安全地移动您的文件夹,并保留版本历史记录。我认为您可以使用 Repo Browser 来做同样的事情,但我并没有使用太多。

我希望这对你有用!

资源

于 2013-10-18T19:52:26.727 回答