Is it possible to have a single subversion server with multiple directories for branches that are each mapped as remotes in a git repository created using git-svn?
Existing Setup
- Trunk:
http://svn.example.com/trunk - My branches:
http://svn.example.com/developers/luisgo/branches - My tags:
http://svn.example.com/developers/luisgo/tags - My scrum team's branches:
http://svn.example.com/teams/scrum-01/branches - My scrum team's tags:
http://svn.example.com/teams/scrum-01/tags - Company's branches:
http://svn.example.com/branches - Company's tags:
http://svn.example.com/releases
This is legacy and in the process of being migrated to git BUT I am trying to prove we can use git-svn and have:
- one "personal" remote point to my personal subversion directory on the server
- one "scrum" remote point to my scrum team's subversion directory on the server and
- one "company" remote point to the company's subversion directory on the server
Note that I don't mind it if my remote's names have to be personal/branches, personal/tags, scrum/branches, scrum/tags, company/branches and company/tags respectively.
Ultimately I want to be able to create a branch off of trunk (aka company/master) that is not only local but pushed to personal/branches/some-feature-branch and later can be pushed to a different remote (say scrum/branches/some-feature-branch for collaboration and finally pushed to company/some-feature-branch for release. Note that I understand tagging but intentionally omitting that for the purposes of this discussion.
I thought this would work:
[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/*
But it doesn't.
EDIT ===========================================
I think I explained myself wrong. Technically that example above works. What I am trying to achieve is to have one "remote" create per branching directory so:
git push personal feature-branch
Results in:
https://svn.example.com/developers/luisgo/branches/feature-branch
And...
git push scrum feature-branch
Results in:
https://svn.example.com/teams/scrum-01/branches/feature-branch
And...
git push company feature-branch
Results in:
https://svn.example.com/branches/feature-branch
In essence personal, scrum and company are remotes with different branches/* in the same svn server.
When I try to do this:
[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/*
It tells me I need to resolve an ambiguous setting where I have the same url specified for more than one remote. I get that it is but these do share one trunk.
END EDIT ===========================================
Any ideas? Is this even possible?
Thank you,
Luis
PS: My apologies if this is not being posted in the right place. I am happy to move it. No need to flame.