11 votes

Travailler localement avec Git lorsque le dépôt principal est SVN

Il y a un projet open source que je veux vérifier et auquel je veux contribuer. Le dépôt principal est SVN mais je veux travailler avec Git. Est-ce possible ?

La plupart de mes recherches aboutissent à des guides où l'on passe de SVN à Git (ou l'inverse) et où l'on ne revient pas en arrière.

  • Si je vérifie le projet, que j'y apporte une modification et que je la pousse vers la branche que j'ai créée sur Github, comment dois-je en informer les auteurs originaux ?
  • Est-il difficile d'inclure une contribution faite sur un dépôt Git dans un dépôt SVN ?
  • Je compare simplement deux révisions (mon dernier checkout/pull/update et mon dernier commit local), je génère un patch à partir de celui-ci et je l'envoie à l'entreprise.

Supposons que les auteurs originaux n'aient aucun intérêt à apprendre autre chose que SVN.

[Mise à jour] Je n'ai pas, et je ne veux pas avoir, d'accès au dépôt SVN. Je cherche des solutions de contournement.

[Update2] Si les rustines sont effectivement ma seule option, y a-t-il d'autres mises en garde dont je devrais tenir compte ?

7voto

lemonad Points 3063

Heureusement, il y a git-svn exactement dans ce but. Il vous permet d'utiliser git localement tout en étant capable de vous connecter à SVN lorsque vous le souhaitez. C'est assez simple et il y a beaucoup d'informations si vous cherchez git-svn ici ou via Google.

Un tutoriel est disponible à l'adresse suivante http://flavio.castelli.name/howto_use_git_with_svn qu'il serait bon d'examiner en premier lieu.

Editer : Pour générer des diffs compatibles avec SVN, vous pouvez utiliser git diff --no-prefix . Notez cependant que ce format n'est pas compatible avec TortoiseSVN. Si la compatibilité est nécessaire, vous devrez utiliser une sorte de shell script ; voir l'exemple ici : http://mojodna.net/2009/02/24/my-work-git-workflow.html

Editer : Un inconvénient potentiel de git-svn est qu'il ne gère pas les éléments externes de svn. Vous devrez les gérer vous-même.

Bonne chance !

7voto

Ben James Points 41165

Il est très facile de synchroniser un dépôt Git avec un dépôt Subversion :

Cloner le dépôt Subversion (dans cet exemple simple, j'ignore les branches/tags)

$ git svn clone https://url/to/repo/trunk

Restez à jour avec le tronc Subversion :

$ git svn rebase

Maintenant, si vous avez un accès de commit au repo de Subversion, vous pouvez pousser vos changements :

$ git commit
$ git svn dcommit

Sinon, la soumission d'un correctif est votre seule option, si les auteurs du dépôt Subversion ne sont pas intéressés par l'utilisation de Git :

$ git diff 1cc92b96 > my_patch.patch

Dans ce cas, il est évidemment préférable de ne pas faire de commits sur la branche que vous synchronisez avec le repo de Subversion.

3voto

Sergey Kuznetsov Points 4324

Oui ! C'est possible !

Consultez ce billet pour plus de détails : http://www.romanenco.com/gitsvn

Trois ou quatre étapes simples permettent de réaliser la symbiose entre les SCM SVN et Git.

J'ai travaillé avec cette technologie pendant environ trois mois et je n'ai eu aucun problème. C'est vraiment cool ! Quand votre repo principal est dans le SVN, vous pouvez faire des commits hors ligne et profiter des avantages de la fusion Git.

1voto

J.F. Sebastian Points 102961

Si vous n'avez pas, et ne voulez pas avoir, d'accès au dépôt SVN, alors une combinaison de git-svn y StGit peut aider. git-svn crée/met à jour un clone et stg maintient une série de correctifs au-dessus d'elle ( stg Les commandes proviennent de Cours accéléré sur StGit ):

git svn clone ..

stg new invent-some-patch-id
...edit patch description...
...hack hack hack in the tree...
stg refresh
...possibly hack some more...
stg refresh    
..
stg mail

Véase Tutoriel StGIT pour commencer.

REMARQUE : je n'ai pas encore essayé ce flux de travail.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X