[GIT-SVN] Branches tracking in niet-standaard SVN layout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
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:
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 ...

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Hoe ziet je huidige .git/config eruit? Wellicht is dat een beter aanknopingspunt. In de tussentijd zou je deze link als referentie kunnen gebruiken. Het lijkt erop dat zij precies doen wat jij hier ook doet. Het zal dan neerkomen wat lijkt op:

code:
1
2
3
url = SVN_URL
fetch = trunk/project1:refs/remotes/trunk
branches = branches/project1/*:refs/remotes/branches/*


Uiteraard is dit dan voor slechts één project.

Acties:
  • 0 Henk 'm!

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Bij mijn methode (manueel de branches toevoegen als aparte git-svn svn-remotes) krijg ik het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[svn-remote "svn-trunk"]
        url = https://repo/trunk/project1
        fetch = :refs/remotes/svn-trunk
[svn-remote "svn-branch"]
        url = https://repo/branches/project1
        fetch = :refs/remotes/svn-branch


Bij de methode met 'git svn init ...':
Krijg ik:
code:
1
2
3
4
5
6
7
8
9
10
File Edit Options Buffers Tools Conf Help                                                                                                                                          
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[svn-remote "svn"]
        url = https://repo/
        fetch = trunk/project1:refs/remotes/trunk
        branches = branches/project1//*:refs/remotes/*


De branches zijn echter niet zichtbaar in de git repo (uiteraard heb ik gefetchd).
Of moet ik speciale parameters meegeven met fetch om die branches te detecteren/mee te sleuren?

Edit:
Ik denk dat ik het gevonden heb. Blijkbaar was het probleem gewoon de -r parameter die ik opgaf bij git svn fetch. Het correcte command is:

code:
1
git svn fetch -r REV:HEAD


Dan zie ik wél de branches (wel enkel maar de branches gecreëerd na REV, maar dat lijkt me maar normaal..) .

Bedankt voor de goeie informatie!

[ Voor 12% gewijzigd door DieterVDW op 09-07-2012 12:48 ]