鉴于我加入的团队如何使用SVN,这是一个奇怪的问题。基本上,svn存储库遵循标准布局,但是干线确实在1。5年左右没有被触及,并且工作往往仅在分支的分支和分支中发生。因此,我使用git-svn从代表我们下一个版本的活动分支的分支进行克隆,这就是我本地git存储库中的主跟踪。让我们从这里开始在svn'release'中调用这个分支。为此目的使用git-svn只是笨拙的dory。
现在,有人已经创建了一个“发布”功能分支,我将称之为“功能”,我想要下载到我的本地分支,并承诺。当然,我可以在本地克隆分支到另一个目录/ git存储库,但我真正想做的是在我的本地git存储库中的本地分支中镜像“feature”以便在这两个人尽可能地直截了当。我已经看到其他stackoverflow.com帖子显示这是如何工作的,假设你已经git svn init
与--stdlayout
一起使用,但由于上述原因,我没有这样做。
这是我的.git / config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://our.svn.server/svn/root/branches/release
fetch = :refs/remotes/git-svn
我假设我[svn-remote]
部分需要的是branches = $something
,但我不知道在这种情况下是什么东西是什么,也不知道我需要什么git checkout和其他命令的咒语在我将更改改为.git / config。
有什么建议吗?
编辑 - 以下作品:
所以我从头开始并执行以下克隆命令:
git svn clone https://my.svn.server/svn/root -T branches/branch_I_want_as_master -b branches
在大约16个小时后,最终将所有东西都拉下来了。结果.git / config看起来像这样:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://my.svn.server/svn/root
fetch = branches/branch_I_want_as_master:refs/remotes/trunk
branches = branches/*:refs/remotes/*
所以我知道这有效 - 我可以git checkout -b name-of-a-branch name-of-a-branch
它给了我当地git仓库中的远程分支。以前的答案并不是我需要的确切答案,但是由于它们很有用,我已经投票了。
在这一点上,我会接受答案,只是解释了为什么这有效,也许是一个有用的链接,打破了如何正确使用.git / config做事情。
答案 0 :(得分:5)
您的存储库配置应如下所示:
[svn-remote "svn"]
url = https://our.svn.server/svn/root
fetch = branches/release:refs/remotes/git-svn
branches = branches/release/feature1:refs/remotes/branches/*
branches = branches/release/feature2:refs/remotes/branches/*
url
应指向您的存储库的根目录。 fetch
指向您的主干(实际上可能是任何分支),并且可以有任意数量的branches
条目,指向功能分支。
也许你应该从scatch构建你的git存储库,但是这个配置可以工作。
答案 1 :(得分:2)
您是否尝试过将branches=..
添加到svn-remote部分? (假设url
直接指向您的release
分支。您将获得一个额外的release
头部跟踪发布分支,但随后您将获得所有其他分支跟踪,以便您可以检查它们。奖励git svn branch
也可能(可能)用于创建新分支!
作为旁注,您也可以使用--stdlayout
来克隆您的svn回购,然后将主要设置为跟踪release
而不是trunk
。这也不难。