【问题标题】:Use git-svn with multiple svn repos and branches将 git-svn 与多个 svn 存储库和分支一起使用
【发布时间】:2013-09-19 10:24:24
【问题描述】:

我有一个我一直在研究的 svn 分支,并决定开始使用 git-svn 在本地工作。现在我有两个问题。我想将我的工作移动到另一个 svn 存储库(在同一主机上),但我首先想合并来自主干的最新工作。我将如何使用 git-svn 做到这一点?另外,我将如何在一个单独的 svn-repo 中继续我的工作,同时不断合并来自原始 repo 的工作?另外,我不想从原始主干中检查整个历史记录,因为该项目相当庞大。我是 git 和 git-svn 的新手,虽然我已经参加了 git 分支的速成课程,并且我有足够的信心使用 rebase 和 cherry-pick 等高级命令。我主要需要知道如何通过 git-svn 应用这些概念。 svn repos 是否以某种方式设置为 git 远程?网上有没有很好的资源来解释它是如何工作的?非常感谢任何指导。

【问题讨论】:

    标签: git-svn branching-and-merging git-remote


    【解决方案1】:
    1. 使用git svn init -s <url> 创建您的 Git 存储库。

    2. git config --edit,为您的每个 Subversion 存储库添加几个 svn-remotes。稍后您将对所有 git-svn 命令使用 -R 选项来选择要使用的 svn-remote

    3. 根据需要调整 svn-remote 分支映射。请记住,默认的 refs/remotes/* 命名空间指定远程分支——而不是 Git 远程。 (您将只有一个名为.git remote,我不建议将其推入/拉出)。

      您可以轻松设计远程分支命名空间,以将来自不同 Subversion 存储库的分支分开(例如 refs/remotes/repoA/*/refs/remotes/repoB/* 等)。

    4. git svn fetch。这具有仅部分扫描历史记录的选项,例如从特定版本开始。请阅读manpage 的说明,了解如何执行此操作。

      您也可以在此处忽略特定路径和/或分支。

    5. 像往常一样使用 Git,尽量让您的提交保持线性。经常变基。合并提交很好(git-svn 甚至会设置svn:mergeinfo 属性),但要小心(并阅读手册页以获取警告)。了解带有git-svn-id 标签的 Git 提交是不可变的push -f 不会拯救你。例如,禁止修改或 rebase 已经 dcommit'ed 的更改。

    网上有没有很好的资源来解释它是如何工作的?

    到目前为止,最好的资源是manpage。下一个是git-svn source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多