SVN分支历史因迁移而丢失

时间:2016-03-23 16:23:31

标签: git svn subgit

初学者与GIT& SubGit :)。

在SVN方面(Subversion版本1.7.4),开发人员创建了一个不在分支文件夹下但与trunk,tags,branches等级相同的分支:

- trunk
- branches
- tags
- TheBranch

然后他们将这个分支移动到branches文件夹下(我们可以看到很多变化):

- trunk
- branches
  - TheBranch 
- tags

当我们使用SubGit将关联的存储库迁移到Git时,迁移的分支仅包含与移动关联的修订(ps:操作后没有更新)。然而,SubGit处理的修订版本是正确的,但是在移动之前在分支中完成的所有版本都没有显示。

使用的命令是:

subgit import --svn-url [svn_url_repository] [path_of_git_repo] --username [user_name] --password [password].

我们忘了一个选项吗?

3 个答案:

答案 0 :(得分:1)

“subgit import”命令是“subgit configure”+“subgit install”+“subgit uninstall”的快捷方式,它仅适用于标准trunk / branches / tags存储库布局。在你的情况下,我建议使用这3个命令而不是单个“subgit import”:

$ subgit configure --svn-url SVN_URL repo.git

然后编辑repo.git/subgit/config中的trunk / branches / tags / shelf选项以提及您的其他分支:

trunk = trunk:refs/heads/master
branches = TheBranch:refs/heads/obsolete/TheBranch
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*

然后用

翻译存储库
$ subgit install repo.git

如果您不需要连续同步,那么

$ subgit uninstall repo.git

SubGit需要在subgit / config文件中提及源和目标分支来处理移动。

我是SubGit开发人员之一。

更新:修复了配置中的错误:“:”的两边应该有相同数量的星号。

答案 1 :(得分:0)

感谢您的帮助。

我成功执行了:

subgit configure --svn-url [svn_url_repository] repo.git

然后更新了配置文件:

[svn]
trunk = trunk:refs/heads/master
branches = trunk2013:refs/heads/obsolete/*
branches = branches/*:refs/heads/*
shelves = shelves/*:refs/shelves/*
tags = tags/*:refs/tags/*

当我执行时:

install repo.git
SubGit version 3.1.1 ('Bobique') build #3448
INSTALLATION FAILED
error: Failed to load Subversion configuration at 'repo.git\subgit\config'
error: Invalid layout option 'svn.branches': Number of asterisks ('*') on the left and right side of the mapping definition differs, when it should be equal..

经过一些调查后,我换了:

branches = trunk2013:refs/heads/obsolete/*

由:

branches = trunk2013:refs/heads/obsolete

现在我有了TheBranch的历史:)。

再次感谢。

答案 2 :(得分:-1)

由于在较旧的修订版中,分支机构不在默认情况下'结构文件夹,它没有迁移到git,因为迁移基本上是通过修订修改并将每个SVN修订提交为GIT-commit。 为了解决这个问题,您应该告诉迁移迁移不在默认trunk / branches / tags中的路径。有关更多详细信息,请参阅git-svn文档。