【问题标题】: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】:
-
使用git svn init -s <url> 创建您的 Git 存储库。
-
git config --edit,为您的每个 Subversion 存储库添加几个 svn-remotes。稍后您将对所有 git-svn 命令使用 -R 选项来选择要使用的 svn-remote。
-
根据需要调整 svn-remote 分支映射。请记住,默认的 refs/remotes/* 命名空间指定远程分支——而不是 Git 远程。 (您将只有一个名为. 的git remote,我不建议将其推入/拉出)。
您可以轻松设计远程分支命名空间,以将来自不同 Subversion 存储库的分支分开(例如 refs/remotes/repoA/*、/refs/remotes/repoB/* 等)。
-
git svn fetch。这具有仅部分扫描历史记录的选项,例如从特定版本开始。请阅读manpage 的说明,了解如何执行此操作。
您也可以在此处忽略特定路径和/或分支。
-
像往常一样使用 Git,尽量让您的提交保持线性。经常变基。合并提交很好(git-svn 甚至会设置svn:mergeinfo 属性),但要小心(并阅读手册页以获取警告)。了解带有git-svn-id 标签的 Git 提交是不可变的,push -f 不会拯救你。例如,禁止修改或 rebase 已经 dcommit'ed 的更改。
网上有没有很好的资源来解释它是如何工作的?
到目前为止,最好的资源是manpage。下一个是git-svn source。