使用TortoiseGit和svn-git克隆SVN存储库的特定分支

时间:2016-05-25 11:00:12

标签: git svn git-svn tortoisegit

我有一个包含以下架构的SVN项目(空trunktags

https://svn-repo.com/svn/company
   +--my_project
   |  +--trunk (empty)
   |  +--branches
   |  |  +--my_branch
   |  |  +--my_branch2
   |  |  +--temp_branch1
   |  |  +--temp_branch2
   |  |  +--temp_branch3
   |  +-tags (empty)

我想使用TortoiseGit将此存储库克隆到具有分支my_branchmy_branch2的git存储库中,并且能够将更改提交回SVN。

我能够通过不检查任何与Trunk,Tags,Branch相关的框并将URL放到分支(例如https://svn-repo.com/svn/company/my_project/branches/my_branch)并指定分支的第一个SVN修订版来克隆单个分支。 / p>

TortoiseGit clone of SVN single branch

我尝试将网址https://svn-repo.com/svn/company/my_project放入并检查所有框,但每次都失败。

问题1 :如何通过TortoiseGit克隆SVN存储库及其所有分支到Git?

问题2 :只在Git存储库中保留某些分支(即删除所有分支temp_branchN)的方式(如果存在)是什么?

我发现了一些使用git-svn CLI(如related topic),但与TortoiseGit无关。

非常感谢

2 个答案:

答案 0 :(得分:3)

  1. pure TortoiseGit
  2. 你不能(以好的方式)
  3. 您必须手动编辑[svn-remote]档案中的$GIT_DIR/config部分
  4. Git-SVN doc提到Subversion repos的一些罕见案例,并建议可能的解决方案:枚举所有需要(并且只需要)的分支

      

    由于某些SVN存储库奇怪地配置了多个项目,因此允许使用以下列出的扩展:

    [svn-remote "project-a"]
        ...
      branches = branches/*/project-a:refs/remotes/project-a/branches/*
      branches = branches/release_*:refs/remotes/project-a/branches/release_*
      branches = branches/re*se:refs/remotes/project-a/branches/*
        ...
    

答案 1 :(得分:1)

问题1 TortoiseGit +配置文件补丁的混合(下面的c.f.)

问题2 根据Lazy Barger提示,我想出了以下流程

  1. 仅使用主干选择的TortoiseGit克隆(修订版12345对应于创建的tunk)
  2. TortoiseGit clone of SVN trunk

      手动编辑
    1. .git/config文件以添加所需的分支
    2. 以下内容应添加到svn-remote部分

      [svn-remote "svn"]
          url = https://myserver:8443/svn/WorkRoot
          fetch = my_project/trunk:refs/remotes/origin/trunk
          branches = my_project/branches/my_branch*:refs/remotes/branches/*
      
      1. TortoiseGit SVN fetch拉出分支
      2. 最后一个命令可能需要一段时间,因为它从修订版1开始搜索。

        1. 执行TortoiseGit Switch/Checkout以更改分支
        2. 注意:要执行等同于svn update的命令,我使用Git SVN Rebase并选择与远程分支对应的正确上游(而不是默认选择的中继)。 / em>的

          Git SVN Rebase

          希望有所帮助