2011-09-15 4 views
1

J'ai essayé de résoudre ce problème par moi-même. Cependant, je n'ai pas trouvé une solution qui fonctionne vraiment. Toutes mes tentatives ont fini avec les conflits, beaucoup de rebasage, etc., etc.Utilisation de git et svn

Alors, j'ai la configuration suivante:

Git est mon principal CVS pour tous mes projets.

Pour l'un des projets, j'utilise la boîte à outils wp7 silverlight de codeplex.com. Cependant, pour mon projet, j'ai besoin de changer certaines lignes de code dans la boîte à outils.

Alors, je voudrais avoir le scénario suivant:

  • Git je besoin d'avoir un clone du repo SVN de CodePlex. Donc, je pourrais facilement travailler dessus. (Btw le repo de SVN est en lecture seule)
  • Cependant, de temps en temps je devrais chercher les dernières mises à jour du dépôt SVN.

Comment puis-je accomplir ce scénario?

Nous vous remercions de votre aide!

+0

J'utiliserais probablement 'git-svn' et ferais un dépôt séparé pour le toolkit Silverlight, et ensuite dans votre repo Git l'utiliser comme un' submodule'. – basicxman

+0

@basicxman J'ai déjà essayé ça. Cependant, les problèmes apparaissent lorsque je récupère les mises à jour du repo SVN. Conflits avec les journaux et l'historique. – Mike

Répondre

1

Dans votre projet, la boîte à outils pourrait-elle être dans un sous-dossier géré par svn?

Une approche simpliste (qui manque l'opportunité d'importer l'historique de version svn que git-svn mentionne par basicxman) serait de gérer l'ensemble du projet en utilisant git incluant le contenu des dossiers mis à jour par svn. Vous pouvez souhaiter exclure les répertoires .svn.

Essayez d'ajouter une ligne à .git/info/exclure pour votre projet d'ignorer des fichiers ou des dossiers appelés svn

+0

Merci, c'est une façon de résoudre ce problème. Cependant, je voudrais utiliser git pour l'ensemble du scénario. – Mike

0

Vous apportez des modifications au code CodePlex. Faites ces changements sur une branche. Gardez le maître à jour avec le repo svn codeplex en utilisant git-svn. Après une mise à jour, fusionnez le maître dans votre branche des modifications. Ensuite, partagez votre repo codeplex avec votre repo principal sous forme de sous-module comme suggéré ci-dessus.