Hallo,
Ik probeer met git-svn een checkout te doen van een SVN repo met een niet-standaard structuur.
Mijn vereiste: branches worden correct getracked zonder dat er data gedupliceerd opgeslagen wordt in de repository.
De SVN repository layout:
Hoe ik dit momenteel doe:
1. git clone -r REV SVN_URL
(Revisie is nodig want repo is veel te groot om helemaal te clonen)
2. manueel een svn-remote toevoegen voor de branch(es) in .git/config
3. git svn fetch svn-branch
Hierna heb ik een git repository die zowel de trunk als een branch tracked. GIT is zich echter niet bewust dat deze gerelateerd zijn. Dit doe ik met:
4. Een graft point aanmaken in .git/info/grafts zodat de commit waarin de branch is aangemaakt een child is van de juiste commit in de svn-trunk remote branch. Dit hecht effectief trunk en branch aan elkaar, zodat de branch depend op de trunk.
(Voor info over graft points: http://bugsquash.blogspot...tching-git-histories.html ).
Hierna heb ik een repository in de staat die ik wil.
Dit zou IMO echter ook mogelijk moeten zijn met de standaard git-svn functionaliteit. Ik heb al het volgende geprobeerd:
Dit werkt echter niet. Enkel de trunk is aanwezig als remote branch. De branches zijn niet aanwezig. Wat doe ik verkeerd? Het lijkt mij sterk alsof git-svn perfect zou moeten kunnen omgaan met deze niet-standaard SVN layout, zolang ik maar de juiste -T, -b en -t parameters meegeef ...
Of zorgt de -r parameter voor problemen?
Ik heb ook al geprobeerd met de optie --no-minimize-url zoals gesuggereerd in bepaalde blog posts, maar dit lijkt geen verschil te maken ...
Ik probeer met git-svn een checkout te doen van een SVN repo met een niet-standaard structuur.
Mijn vereiste: branches worden correct getracked zonder dat er data gedupliceerd opgeslagen wordt in de repository.
De SVN repository layout:
repo/ trunk/ project1 project2 branches/ project1/ branch_van_project1
Hoe ik dit momenteel doe:
1. git clone -r REV SVN_URL
(Revisie is nodig want repo is veel te groot om helemaal te clonen)
2. manueel een svn-remote toevoegen voor de branch(es) in .git/config
3. git svn fetch svn-branch
Hierna heb ik een git repository die zowel de trunk als een branch tracked. GIT is zich echter niet bewust dat deze gerelateerd zijn. Dit doe ik met:
4. Een graft point aanmaken in .git/info/grafts zodat de commit waarin de branch is aangemaakt een child is van de juiste commit in de svn-trunk remote branch. Dit hecht effectief trunk en branch aan elkaar, zodat de branch depend op de trunk.
(Voor info over graft points: http://bugsquash.blogspot...tching-git-histories.html ).
Hierna heb ik een repository in de staat die ik wil.
Dit zou IMO echter ook mogelijk moeten zijn met de standaard git-svn functionaliteit. Ik heb al het volgende geprobeerd:
code:
1
2
| git svn init -T http://host/repo/trunk/project1 -b http://host/repo/branches/project1 git svn fetch -r REV |
Dit werkt echter niet. Enkel de trunk is aanwezig als remote branch. De branches zijn niet aanwezig. Wat doe ik verkeerd? Het lijkt mij sterk alsof git-svn perfect zou moeten kunnen omgaan met deze niet-standaard SVN layout, zolang ik maar de juiste -T, -b en -t parameters meegeef ...
Of zorgt de -r parameter voor problemen?
Ik heb ook al geprobeerd met de optie --no-minimize-url zoals gesuggereerd in bepaalde blog posts, maar dit lijkt geen verschil te maken ...