2009-06-04 10 views
1

J'ai un projet dans SVN qui a un dossier plugins. Plusieurs des dossiers de plugins sont des dépôts git - je les ai ajoutés à mon dossier de plugins en utilisant git clone.Puis-je faire git-svn importer un dépôt Subversion qui lui-même contient des dépôts git

Cela a bien fonctionné pour moi, mais maintenant, je suis à la recherche de migrer mon dépôt SVN à git en utilisant git-svn:

git svn init http://path/to/my/repo --no-metadata 
git config svn.authorsfile ~/authors.txt 
git svn fetch 

Cela fonctionne bien pour toutes mes premières révisions qui n'ont pas les prises en pension git dans mon dossier plugins, mais quand il frappe la première révision contenant un dépôt git il échoue avec l'erreur suivante:

trunk/plugins/my_plugin/.git/HEAD was not found in commit 
ae9ad0ab7cebd144c823d90d43cdab2b30d13f9e (r2259) 

y at-il un moyen de contourner cela pour me permettre d'importer pleinement mon dépôt, peut-être en excluant tout. git dossiers qui rési de dans le référentiel SVN?

Répondre

4

Il s'avère que j'utilisais git-svn 1.5 sur Ubuntu qui ne supportait pas le drapeau --ignore-paths sur git-svn fetch. Après avoir construit git 1.6 de la source, je peux maintenant courir:

git svn fetch --ignore-paths='\.git' 

fetch ne tient pas compte maintenant tous les dossiers et les importations .git avec succès toute l'histoire SVN à mon nouveau dépôt git.

1

Vous pouvez vider le dossier actuel svn, filter sur les répertoires .git, et créer un autre repo svn basé sur cette image filtrée, et utiliser cette nouvelle comme base pour le repo git.

L'utilisation parallèle de git et svn serait probablement intéressant - vous devrez remplacer le repo existant par un nouveau gitless, et les répertoires .git manquants pourraient causer quelques problèmes.

Je n'ai pas essayé cela, donc vous allez vouloir faire attention, et avoir des sauvegardes.

0

En raison de la façon dont fonctionne Git, avoir plus d'un dossier .git va vous causer des problèmes (enfin, vous savez déjà que hehe).

Vous avez 2 options: - si vous ne se soucient pas de l'histoire, faire le chemin facile: supprimer les dossiers .git de svn et passer à git le projet complet

  • si vous vous souciez histoire, faites-le à la dure: vérifier ce link et suivez les étapes

Je sais que mon chef d'équipe avait quelques problèmes avec cela, mais cela fonctionne.

EDIT: J'ai oublié de mentionner une autre façon: vous pouvez utiliser Bazaar pour tirer le projet, car il interagit avec les deux. Je ne sais pas si cela serait plus facile si

Questions connexes