2010-01-22 4 views
1

J'utilise Versions sur OS X pour gérer tout mon code dans Subversion. Je ne suis pas intéressé à changer de manière significative mon flux de travail actuel jusqu'à ce que Git ait une application graphique comme Versions.Comment utiliser SVN localement et envoyer des modifications à un serveur Git distant?

Un de mes clients me veut pousser mon code à un dépôt GitHub privé. Il y a beaucoup de questions et d'articles sur le fait de lancer Git localement et de pousser vers un serveur Subversion distant, mais je n'arrive pas à trouver de suggestions pour le scénario inverse.

Pour être clair, ce que je veux faire est:

  1. Gardez mon code managé dans une caisse de Subversion local (le dépôt central est en fait sur un serveur distant, mais je suis en espérant que ne le fait pas importe ici)
  2. Chaque fois que je fais une livraison au client, je voudrais exécuter une commande telle que "git update-github-avec-local-svn-changes"
  3. Si quelqu'un d'autre commet à GitHub (rare), je voudrais lancer une commande telle que "update-svn-avec-GitHub locale changements git"

Répondre

1

La meilleure réponse que je peux penser est d'utiliser git-svn pour faire une copie git de votre serveur de subversion, puis pousser la branche ainsi créée à github. Quand les changements sont faits dans github, arrêtez-les, fusionnez-les avec votre branche clonée de subversion et engagez-les dans subversion. Ceci traite tout le côté github des choses en aval de votre serveur de subversion (maître), et vous devriez être capable d'utiliser toutes les suggestions déjà existantes pour le gérer.

S'il existe déjà un code à github, vous devrez peut-être faire un peu de danse avec rebasage. L'idée de base serait d'obtenir la dernière source, de l'importer dans subversion, de tirer de subversion en utilisant git-svn puis de rebaser le dernier commit git-svn en haut de la branche de github. Vous avez ensuite l'historique git avec un nouveau commit en tête, contenant des métadonnées git-svn. Je n'ai pas essayé cela, cependant.

+0

Merci, Andrew. Je peux commencer un nouveau dépôt GitHub pour ce projet, donc la deuxième partie ne devrait pas être un problème. Ai-je raison de penser que je devrais utiliser la commande "git-svn rebase" pour mettre à jour mon dépôt Git local avec les dernières modifications de Subversion? – davidcann

+0

Merci, Andrew. Cela a fini par être une bonne solution. – davidcann

+0

C'est probablement le moyen le plus facile, oui. Vous pouvez à la place utiliser 'git svn fetch' et gérer toute fusion ou rebasage. –

0

Il y a un pont git à svn appelé assez git-svn appropriée qui permet d'utiliser un Git local, puis pousser/tirer vers un serveur SVN à distance. Mais je ne suis pas au courant d'un outil qui soutient la direction opposée. Je suis sûr que je vais en apprendre un dans les réponses à cette question!

+0

Oui, exactement, tous les discours sur git-svn est grande, mais il semble se noyer toute question de la direction opposée. – davidcann

0

Avez-vous essayé GitX. Il pourrait être assez bon d'une interface graphique pour git, que vous pourriez simplement aller directement avec git.

+0

Merci, Geoff, j'ai essayé GitX et ça ne me convenait pas vraiment. – davidcann

Questions connexes