J'avais besoin de ce ainsi, et avec l'aide de la Bombe de réponse + certains de bidouiller, j'ai eu de travail. Voici la recette:
Importation git -> svn
1. cd /path/to/git/localrepo
2. svn mkdir --parents protocol:///path/to/repo/PROJECT/trunk -m "Importing git repo"
3. git svn init protocol:///path/to/repo/PROJECT -s
4. git svn fetch
5. git rebase trunk
5.1. git status
5.2. git add (conflicted-files)
5.3. git rebase --continue
5.4. (repeat 5.1.)
6. git svn dcommit
Après #3, vous obtiendrez un message cryptique comme ceci:
À l'aide de plus haut niveau de l'URL: protocol:///path/to/repo/PROJECT => protocol:///path/to/repo
Il suffit de les ignorer.
Lorsque vous exécutez #5, vous pourriez obtenir des conflits. Résoudre ces par l'ajout de fichiers avec l'état "dissociées" et la reprise de rebase. Finalement, vous serez fait; Puis de synchroniser jusqu'à la svn-repo, à l'aide de dcommit
. C'est tout.
Maintien de repos dans la synchro
Vous pouvez désormais synchroniser à partir de svn -> git, en utilisant les commandes suivantes:
git svn fetch
git rebase trunk
Et pour la synchronisation à partir de git -> svn, utilisez:
git svn dcommit
Note finale
Vous voudrez peut-être essayer cela sur une copie locale, avant d'appliquer pour un live repo. Vous pouvez faire une copie de votre git-repo à un lieu temporaire, simplement à l'aide d' cp -r
,, toutes les données sont dans l'opération elle-même. Vous pourrez alors mettre en place un fichier de test basée sur les pensions, à l'aide de:
svnadmin create /home/name/tmp/test-repo
Et vérifier une copie de travail, en utilisant:
svn co file:///home/name/tmp/test-repo svn-working-copy
Qui vous permet de jouer avec des choses avant de faire des changements durables.
Addendum: Si vous vous trompez git svn init
Si vous exécutez accidentellement git svn init
avec l'url erronée, et que vous n'étiez pas assez intelligents pour faire une sauvegarde de votre travail (ne me demandez pas ...), vous ne pouvez pas exécuter la même commande à nouveau. Vous pouvez toutefois annuler les modifications apportées par l'émission de:
rm -rf .git/svn
edit .git/config
Et supprimer la section [svn-remote "svn"]
section.
Vous pouvez ensuite exécuter git svn init
de nouveau.