GIT-SVN

Pour le reste, c'est comme d'habitude avec GIT, voir git

Pour migrer un projet de SVN vers GIT, voir svn-vers-git

Créer un clone GIT

Clone d'un repository SVN avec juste une seule branche.

git svn clone svn+ssh://.../project/trunk

En général on veut toutes les branches et tags

git svn clone --stdlayout svn+ssh://.../project

Si on ne veut pas tout l'historique (ca peut être long), on peut prendre uniquement la fin

git svn clone --stdlayout -r1700:HEAD svn+ssh://.../project

Mise à jour

Pour mettre à jour un clone GIT selon les choses commitées dans le SVN

git svn rebase

Pour pousser dans SVN des choses commitées dans le clone GIT

git svn dcommit

Historique

Historique au format SVN

git svn log

Pour voir un commit GIT qui ne soit pas le dernier, avant-dernier …

git log
<pour voir tous les derniers commits, récupérer l'id de celui qui nous intéresse, c'est la ligne 'commit <id>'>
git show <id>

Branches

Pour manipuler plusieurs branches SVN dans le même repository GIT, en supposant qu'elles sont organisés en trunk/, branches/ et tags/ comme d'habitude.

git svn clone --stdlayout svn+ssh://.../project
git branch -rl
<voir la branche SVN qu'on veut checkouter>
git branch --track <newlocalbranch> <SVNbranch>
git checkout <newlocalbranch>

Pour rapatrier de nouvelles branches dans son clone git

git svn fetch
git branch --track <newlocalbranch> <newSVNbranch>
git checkout <newlocalbranch>

Backports

Pour backporter des commits depuis le trunk/master vers une branche créée ci-dessus pour suivre une branche SVN

<voir le dernier commit du trunk>
git show master
<voir l'avant dernier commit du trunk>
git show master^
<voir l'avant avant dernier commit du trunk>
git show master^^
<basculer sur la branche>
git checkout <newlocalbranch>
<backporter l'avant dernier commit du trunk>
git cherry-pick master^
<modifier le message de commit>
git commit -a --amend
<pousser tout ca dans svn>
git svn dcommit
<se remettre sur le trunk>
git checkout master

En cas de problème

Pour réparer un git svn dont dcommit a été tranché par le serveur en plein milieu

<Retrouver le commitid/hash GIT du dernier commit GIT>
<vérifier que c'est le bon commitid>
git log <commitid>
<effacer les changements locaux laissés par le dcommit tranché>
git reset --hard
<créer une branche temporaire et aller dedans>
git branch tmp <commitid>
git checkout tmp
<mettre cette branche à jour pour les trucs partiellement commités>
git svn rebase
<committer le reste dans git svn>
git svn dcommit
<retourner dans la branche d'origine et effacer la branche temporaire>
git checkout master
git branch -D tmp
<remettre à jour>
git svn rebase

Retrouver un commit dont on a oublié le hash, par exemple parce que dcommit a été tranché

<voir les commits inutilisés>
git lost-found
<regarder un commit>
git show <commitid>
git-svn.txt · Last modified: 2010/08/31 22:04 by goglin
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki