2010-04-23 10 views
7

J'ai un dépôt git primaire pour un projet opensourcegit Miroir svn

Je veux un miroir de tout engage un dépôt svn (sur code.google.com), est-il possible?

Répondre

4

Oui, c'est possible. Utilisez Git's SVN features pour importer dans un référentiel. Vous pouvez ensuite repousser à partir de là. Vous trouverez que pour la plupart, cependant, ce git peut effectivement montrer une histoire SVN mieux que SVN peut montrer un historique git.

3

Si votre historique git est linéaire, vous pouvez essayer d'utiliser git-svn. J'essaierais d'utiliser "git svn clone" pour importer le dépôt SVN existant (vide) dans git, puis rebaser votre historique git existant sur celui-ci et "git svn dcommit".

Si votre historique git n'est pas linéaire (contient des branches et des fusions), vous ne pourrez pas le représenter correctement dans SVN. Dans ce cas, je vous suggère fortement d'utiliser une solution d'hébergement basée sur git (par exemple, github.com).

3

J'ai fait face à cette situation dans mon travail actuel. Notre référentiel Git principal a un historique non linéaire, donc la solution choisie devrait gérer cela. La solution qui semble fonctionner jusqu'à présent est basée sur le référentiel proxy gitsvn. J'ai un crochet après réception installé dans le dépôt Git primaire à son noyau a quelque chose comme ceci:

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

Après dcommit log histoire est réécrite. Lors de la prochaine extraction git du dépôt Git primaire, vous auriez normalement des conflits de mrege. C'est là que l'option -Xtheirs entre en jeu. C'est une stratégie de fusion qui favorise la version distante des changements. Dans ce cas, cela nous permet de résoudre les conflits automatiquement! :)

Seul inconvénient: de jolis messages de validation SVN ne viennent pas gratuitement. Certains piratage git est nécessaire pour qu'ils contiennent toutes les informations des messages de validation Git primaires.

+0

Seriez-vous prêt à partager le piratage de Git mentionné dans votre dernier paragraphe? –

1

Je doute que cela soit possible avec code.google.com, mais vous pouvez configurer votre propre référentiel Subversion et y installer SubGit.

Dès que l'installation est terminée, vous disposez d'une paire de référentiels Subversion et Git liés. Chaque modification dans un référentiel déclenche un hook SubGit qui convertit automatiquement toutes les modifications nécessaires. Pour plus d'informations, veuillez vous reporter aux codes documentation et git-svn comparison. SubGit est un produit commercial, mais pour les projets open-source, vous pouvez obtenir une licence gratuite.