git和git-svn以及多个分支和推送和获取

时间:2010-10-04 14:55:14

标签: git git-svn

如果源SVN repo有多个分支(和标记),则git svn clone --stdlayout会为我提供多个分支。

我想将所有推送到另一个git repo。 git svn clone似乎确实检索了所有版本的所有历史记录。这是为git push提供更好的指示吗?

这是我可能误导的工作流程意图。

  1. 运行git svn将svn克隆到私人仓库。
  2. 将其推送到使用gitosis管理的共享仓库
  3. 制作共享工作分支
  4. 各种各样的人gitosis管理的回购,制作私人分支机构,并合并 共享工作分支。
  5. 我从共享仓库退回到我在步骤1中创建的仓库,合并到trunk,然后dcommit。
  6. 以下是运行git branch -agit svn clone的输出。

    /Users/benson/x/tsk/tsk_git_svn git branch -a
    * master
      remotes/origin/master
      remotes/sleuthkit-3.0
      remotes/sleuthkit-3.1
      remotes/tags/sleuthkit-3.0.0
      remotes/tags/sleuthkit-3.0.1
      remotes/tags/sleuthkit-3.1.0
      remotes/tags/sleuthkit-3.1.0b1
      remotes/tags/sleuthkit-3.1.1
      remotes/tags/sleuthkit-3.1.2
      remotes/tags/sleuthkit-3.1.3
      remotes/tags/sleuthkit-3.1.3b1
      remotes/tags/sleuthkit-3.2.0b1
      remotes/tags/sleuthkit-3.2.0b2
      remotes/trunk
    

2 个答案:

答案 0 :(得分:2)

您可以尝试 git push --mirror ,以确保将所有引用从一个git repo推送到另一个:

来自git push

--mirror
  

指定refs/下的所有引用(包括但不限于refs/heads/refs/remotes/refs/tags/),而不是将每个引用命名为push。到远程存储库。
  新创建的本地引用将被推送到远程端,本地更新的引​​用将在远程端强制更新,并且已删除的引用将从远程端删除。

但我会recommend svn2git(如果你不打算定期更新你的svn回购),为了获得标签的实际标签而不是“分支”。

答案 1 :(得分:0)

如果您有权访问SVN服务器,我建议采用两步解决方案:

$ subgit install path/to/svn/repository
$ cd path/to/svn/repository
$ git push --all <target Git repository>

请注意,目标Git存储库应该是裸的以避免问题(由git init --bare命令创建)