Question

J'ai mes projets dans 2 référentiels. Un sous SVN et un sous Git. Chaque fois que je modifie quelque chose dans SVN, je souhaite faire la même chose dans le référentiel Git.

Disons que je modifie le référentiel SVN en produisant la révision 125. Comment appliquer ces mêmes modifications à mon référentiel Git (en supposant que mon référentiel Git soit à jour avec la révision 124).

Merci.

Était-ce utile?

La solution

Ce que je cherchais / recherchais était:

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

Autres conseils

Essayez:

svn diff | patch -d /path/to/git/repo -p0

Voir svn help diff si vous souhaitez exporter le diff d'une révision spécifique.

Pourquoi personne n'aime Git-svn? Je ne peux pas supposer que personne ne le sait.

Il y a git-svn (et git-hg et git-cvs et git-bzr afaict). Au moins avec git-svn, vous pouvez simplement faire

git svn clone --stdlayout http://myrepo/root here

utiliser -s ( - stdlayout ) suppose que le tronc / les branches / les balises / la présentation sont standard, mais que vous pouvez l'avoir de n'importe quelle manière ( man git-svn ).

Le mappage est bidirectionnel, vous pouvez donc pousser et tirer comme avec une télécommande native (git). Aucune question posée.

Si vous envisagez de générer un correctif dans SVN et de l'appliquer ultérieurement avec Git, n'oubliez pas d'utiliser - git option de ligne de commande :

  

- git

     

Active un mode de sortie spécial pour svn diff conçu pour assurer la compatibilité croisée avec le contrôle de version distribué Git populaire   système.

Par exemple, exécutez

svn diff --git -r 125 > /tmp/patch.diff

Outre l'utilisation du correctif mentionné ci-dessus, vous pouvez également définir un hook post-commit afin que vous n'ayez pas à le faire chaque fois que vous commettez quelque chose de nouveau.

Ce qui précède a fonctionné pour moi.

Source: Comment créer et appliquer un patch avec Git

Tout d'abord, examinez les modifications apportées au correctif . Vous pouvez le faire facilement avec git apply

git apply --stat fix_empty_poster.patch

Notez que cette commande N'A PAS appliqué le correctif, mais ne vous affiche que les statistiques relatives à ses tâches. Après avoir jeté un coup d'œil dans le fichier de correctif avec votre éditeur favori, vous pouvez voir quels sont les changements réels.

Ensuite, vous êtes intéressé par la difficulté du correctif . Git vous permet de tester le correctif avant de l'appliquer.

git apply --check fix_empty_poster.patch

Si vous ne recevez aucune erreur, vous pouvez appliquer le correctif proprement & # 128512 ;. Sinon, vous risquez de voir les problèmes que vous rencontrerez.

Pour appliquer le correctif, je vais utiliser git am au lieu de git apply. La raison en est que git am vous permet de signer un patch appliqué. Cela peut être utile pour référence ultérieure.

git am --signoff < fix_empty_poster.patch

Applying: Added specs to test empty poster URL behaviour
Applying: Added poster URL as part of cli output

D'accord, les correctifs ont été appliqués proprement et votre branche principale a été mise à jour. Bien sûr, relancez vos tests pour vous assurer que rien n’a été cassé.

Dans votre journal de bord, vous constaterez que les messages de validation contiennent un message & # 8220; Signé-désactivé-par & # 8221; étiquette. Cette balise sera lue par Github et d’autres pour fournir des informations utiles sur la façon dont la validation s’est retrouvée dans le code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top