是否可以有一个带有多个分支目录的单一颠覆服务器,每个分支都映射为使用 git-svn 创建的 git 存储库中的远程?
现有设置
- 树干:
http://svn.example.com/trunk
- 我的分支:
http://svn.example.com/developers/luisgo/branches
- 我的标签:
http://svn.example.com/developers/luisgo/tags
- 我的 Scrum 团队的分支:
http://svn.example.com/teams/scrum-01/branches
- 我的 Scrum 团队的标签:
http://svn.example.com/teams/scrum-01/tags
- 公司分支机构:
http://svn.example.com/branches
- 公司标签:
http://svn.example.com/releases
这是遗留问题,正在迁移到 git 但我试图证明我们可以使用 git-svn 并拥有:
- 一个“个人”远程指向我在服务器上的个人颠覆目录
- 一个“scrum”远程指向我的 scrum 团队在服务器上的 subversion 目录,并且
- 一个“公司”远程指向服务器上公司的颠覆目录
personal/branches
请注意,如果我的遥控器的名称必须分别为、personal/tags
、scrum/branches
、和scrum/tags
,我不介意。company/branches
company/tags
最终,我希望能够从主干(又名公司/主服务器)创建一个分支,该分支不仅是本地的,而且personal/branches/some-feature-branch
可以推送到另一个远程(比如scrum/branches/some-feature-branch
协作,最后推送到company/some-feature-branch
发布)。请注意,我理解标记,但出于本讨论的目的故意省略它。
我认为这会起作用:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
warnambiguousrefs = false
[svn-remote "svn"]
url = https://svn.example.com
fetch = trunk:refs/remotes/trunk
branches = developers/luisgo/branches/*:refs/remotes/svn/personal/branches/*
tags = developers/luisgo/tags/*:refs/remotes/svn/personal/tags/*
branches = teams/scrum-01/branches/*:refs/remotes/svn/scrum/branches/*
tags = teams/scrum-01/tags/*:refs/remotes/svn/scrum/tags/*
branches = branches/*:refs/remotes/svn/company/branches/*
tags = releases/*:refs/remotes/svn/company/tags/*
但事实并非如此。
编辑============================================
我想我解释错了。从技术上讲,上面的示例有效。我想要实现的是为每个分支目录创建一个“远程”,因此:
git push personal feature-branch
结果是:
https://svn.example.com/developers/luisgo/branches/feature-branch
和...
git push scrum feature-branch
结果是:
https://svn.example.com/teams/scrum-01/branches/feature-branch
和...
git push company feature-branch
结果是:
https://svn.example.com/branches/feature-branch
本质上personal
,scrum
和company
是在同一个 svn 服务器中具有不同分支/* 的遥控器。
当我尝试这样做时:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
warnambiguousrefs = false
[svn-remote "company"]
url = https://svn.example.com
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/svn/company/branches/*
tags = releases/*:refs/remotes/svn/company/tags/*
[svn-remote "personal"]
url = https://svn.example.com
fetch = trunk:refs/remotes/trunk
branches = developers/luisgo/branches/*:refs/remotes/svn/personal/branches/*
tags = developers/luisgo/tags/*:refs/remotes/svn/personal/tags/*
[svn-remote "scrum"]
url = https://svn.example.com
fetch = trunk:refs/remotes/trunk
branches = teams/scrum-01/branches/*:refs/remotes/svn/scrum/branches/*
tags = teams/scrum-01/tags/*:refs/remotes/svn/scrum/tags/*
它告诉我我需要解决一个模棱两可的设置,其中我为多个遥控器指定了相同的 url。我知道是这样,但它们确实共享一个树干。
结束编辑 ============================================
有任何想法吗?这甚至可能吗?
谢谢,
路易斯
PS:如果没有在正确的地方发布,我深表歉意。我很乐意移动它。没必要发火。