« Migrer de Svn vers Git » : différence entre les versions

Aucun résumé des modifications
 
(8 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
== Lancement du serveur svn sous windows ==
== Lancement du serveur svn sous windows ==


* lancer manuellement svnserve  
* lancer manuellement svnserve ''(dans une console cmd)''
:{{syntaxhighlight|lang=winbatch|code=
:{{syntaxhighlight|lang=winbatch|code=
svnserve.exe -d -r g:\svn
svnserve.exe -d -r g:\svn
Ligne 9 : Ligne 9 :




* lancer  svnserve dans un service
* lancer  svnserve dans un service ''(dans une console cmd)''
:{{syntaxhighlight|lang=winbatch|code=
:{{syntaxhighlight|lang=winbatch|code=
sc create svnserve binpath="\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" --service -r G:\SVN" displayname="Subversion Server" depend=Tcpip start=auto
sc create svnserve binpath="\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" --service -r G:\SVN" displayname="Subversion Server" depend=Tcpip start=auto
Ligne 16 : Ligne 16 :
* démarrer le service
* démarrer le service
:{{syntaxhighlight|lang=winbatch|code=
:{{syntaxhighlight|lang=winbatch|code=
sc start sbnserve
sc start svnserve
sc query svnserve
sc query svnserve
SERVICE_NAME: svnserve
SERVICE_NAME: svnserve
Ligne 29 : Ligne 29 :


== Migration proprement dite ==
== Migration proprement dite ==
* aller dans le répértoire ou se situe la copie locale du repo svn
Merci à <favorites like="Migrer de subversion vers git";output=shorthtml/><br/>
:ouvrir un powershell et récupérer la liste des auteurs des commits
* aller dans le répertoire ou se situe la copie locale du repo svn
:ouvrir un '''powershell''' et récupérer la liste des auteurs des commits
:{{syntaxhighlight|lang=winbatch|code=
:{{syntaxhighlight|lang=winbatch|code=
svn.exe log --quiet | ? { $_ -notlike '-*' } | % { "{0} = {0} <{0}>" -f ($_ -split ' \| ')[1] } | Select-Object -Unique | Out-File 'authors-transform.txt'
{{#!: svn.exe log --quiet | ? { $_ -notlike '-*' } | % { "{0} = {0} <{0}>" -f ($_ -split ' \| ')[1] } | Select-Object -Unique | Out-File 'f:\temp\authors-transform.txt' }}
}}
}}
:{{warning |text=j'ai eu un fichier résultat au mauvais format. Je l'ai converti avec une entête UTF8 sans BOM, avec Notepad++}}


* cloner avec git le repo désiré (préfixe svn pour les reférences svn)
:{{syntaxhighlight|lang=winbatch|code=
git svn clone svn://localhost/wordpress --prefix=svn/ --no-metadata --authors-file "f:\temp\authors-transform.txt" --stdlayout f:\temp\wordpress
}}
* créer le dépot git
:{{syntaxhighlight|lang=bash|code=
cd g:/GIT/wordpress
git init --bare .
git symbolic-ref HEAD refs/heads/master
}}


* pousser les modifications vers le dépot git
:{{syntaxhighlight|lang=bash|code=
cd /f/temp/wordpress
git remote add bare /g/GIT/wordpress
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
}}
* renommer la branche svn/trunk et les tags
:{{syntaxhighlight|lang=bash|code=
cd /g/GIT/wordpress
git branch -m svn/trunk master
git for-each-ref --format='%(refname)' refs/heads/tags | cut -d / -f 4 | while read ref ; do git tag "$ref" "refs/heads/tags/$ref"; git branch -D "tags/$ref"; done
}}


== Liens externes ==
== Liens externes ==

Dernière version du 15 août 2023 à 09:46

<keywords content="SVN,Git,subversion"/>

Lancement du serveur svn sous windows

  • lancer manuellement svnserve (dans une console cmd)
svnserve.exe -d -r g:\svn



  • lancer svnserve dans un service (dans une console cmd)
sc create svnserve binpath="\"C:\Program Files\TortoiseSVN\bin\svnserve.exe\" --service -r G:\SVN" displayname="Subversion Server" depend=Tcpip start=auto


  • démarrer le service
sc start svnserve
sc query svnserve
SERVICE_NAME: svnserve
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0


Migration proprement dite

Merci à


  • aller dans le répertoire ou se situe la copie locale du repo svn
ouvrir un powershell et récupérer la liste des auteurs des commits
svn.exe log --quiet| ? { $_ -notlike '-*' } | % { "{0} = {0} <{0}>" -f ($_ -split ' \| ')[1] } | Select-Object -Unique | Out-File 'f:\temp\authors-transform.txt'


Warning j'ai eu un fichier résultat au mauvais format. Je l'ai converti avec une entête UTF8 sans BOM, avec Notepad++:
  • cloner avec git le repo désiré (préfixe svn pour les reférences svn)
git svn clone svn://localhost/wordpress --prefix=svn/ --no-metadata --authors-file "f:\temp\authors-transform.txt" --stdlayout f:\temp\wordpress


  • créer le dépot git
cd g:/GIT/wordpress
git init --bare .
git symbolic-ref HEAD refs/heads/master


  • pousser les modifications vers le dépot git
cd /f/temp/wordpress
git remote add bare /g/GIT/wordpress
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare


  • renommer la branche svn/trunk et les tags
cd /g/GIT/wordpress
git branch -m svn/trunk master
git for-each-ref --format='%(refname)' refs/heads/tags


Liens externes