2010-10-05 1 views
14

Il existe un projet SVN open-source auquel j'ai un accès en lecture seule, et j'aimerais créer un miroir GIT de ce projet à jour sur GitHub.Y a-t-il des services de synchronisation automatisés SVN-> GIT?

Je sais comment configurer le miroir initial et le maintenir à jour avec git svn rebase, mais cela nécessite encore d'avoir un serveur configuré quelque part avec un travail cron en cours d'exécution pour gérer la synchronisation, mise en place de surveillance pour s'assurer que le le serveur est en marche et le travail cron est en cours, la mise à jour périodique vers la dernière version git, etc.

Avant de réinventer la même roue que tous les autres miroirs SVN-> GIT, je me demandais s'il y avait des services (gratuit ou payant) qui automatisera SVN-> GIT miroir pour moi. Connaissez-vous quelqu'un?

Évidemment, un service automatisé ne peut pas fusionner mes changements - tous mes changements se produisent dans un dépôt séparé (ou peut-être une branche distincte dans le même repo). Je cherche juste un moyen d'automatiser l'interaction SVN et de créer un miroir exact que les autres peuvent cloner.

+1

Je serais également intéressé par un tel service car je veux utiliser un open-source projet hébergé dans SVN en tant que sous-arbre git. La réponse acceptée ne répond pas à la question posée. Il peut y avoir une niche ici pour une petite entreprise. Alternativement, quelqu'un comme github pourrait vouloir offrir un tel service s'il n'existe pas déjà. – paperjam

Répondre

6

Je pense que la responsabilité de cela devrait tomber entre les mains des personnes qui maintiennent le projet. Voir par exemple comment Apache support their projects with Git mirrors.

D'un autre côté, il n'y a pas beaucoup d '"invention" à faire ici, je pense. Si vous avez un serveur qui peut interroger continuellement le référentiel SVN pour les changements, faire un git-svn rebase et pousser vers github est assez simple. Je doute que des entreprises se spécialisent dans la mise en place de ce système (du moins, je n'en ai vu aucune). D'un côté, lorsque vous souhaitez partager vos modifications, vous ne devez pas pousser sur le Git-mirror. Il vaut mieux soit renvoyer git-svn à SVN, soit envoyer un correctif aux développeurs. Si vous poussez sur le repo de SVN, ça gâchera git-svn, je crois. Comme vous le dites, la synchronisation Git-SVN bidirectionnelle ne peut pas être automatisée.

5

Vous pouvez utiliser post-commit hooks dans le serveur svn pour indiquer à git-svn qu'il est temps de rebaser.

+3

Pourriez-vous développer cela? –

2

Vous devez simplement utiliser tailor. Il est capable de convertir à plusieurs reprises n'importe quel VCS à n'importe quel autre VCS. Et cela se fait progressivement, ce qui signifie que si vous convertissez d'abord votre dépôt SVN en Git, alors les validations sont faites à SVN, et vous convertissez à nouveau, il convertira seulement les nouvelles révisions, en les ajoutant correctement comme historique à l'historique Git existant.

Vous pouvez automatiser le processus de deux manières: soit vous exécutez simplement sur mesure, avec quelque chose comme cron ou anacron, ou vous utilisez, comme précédemment suggéré, post-commit hooks dans SVN, déclenchant ainsi la conversion immédiatement après que quelque chose soit engagé à SVN.

0

svn2github.com semble être exactement ce que vous voulez. Il reflète tout svn repo à github et se met à jour automatiquement tant que le repo contient moins de 2000 fichiers (au-dessus de ce que vous devez mettre à jour manuellement)

Questions connexes