我为一群人继承了一个subversion存储库的管理,这个组织非常糟糕,目录结构是这样的:
/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
此外,我想保留每个文件的历史记录,并允许在每个项目的现有分支和主干之间进行切换/合并。
我正在使用togise SVN,并尝试在repo-browser中简单地移动目录,但只有当我“忽略祖先”并且在每个具有树冲突的文件中合并结果时,切换才有效。
有更好的方法吗?
答案 0 :(得分:0)
如果您的机器上有完整的回购(主干+分支+标签),您可以使用Tortoise SVN移动它们。这不是很明显(我知道我必须要努力)。
选择文件夹并使用Ctrl-C / Ctrl-X或上下文菜单复制或剪切它们>像往常一样复制/剪切。转到目标文件夹,然后右键单击上下文菜单 - > TortoiseSVN - >粘贴即可。你不敢使用普通的粘贴(但我确定你知道这一点)。
替代方法:选择要移动的文件夹,然后像对任何文件一样移动它们,方法是右键单击。在释放鼠标右键时,在此处选择SVN移动/复制版本化文件。
这应该安全地移动您的文件夹,保留版本历史记录。我认为你可以使用Repo浏览器做同样的事情,但我没有太多使用它。
我希望这适合你!
答案 1 :(得分:0)
如果我是你,我会忘记切换并使用普通的svn move
,svn rm
,svn mkdir
来实现所需的结构。由于这些命令会跟踪所有文件的历史记录,因此您应能够合并之前可合并的文件夹。
一种可能的行动方案如下:
project_1
project_2
,svn mkdir
等
tags
和branches
目录trunk/
project_x/branches/
project_x/tags/