Créer un utilisateurs de fichiers ( users.txt
) pour la cartographie des utilisateurs SVN à GIT:
user1 = First Last Name <email@address.com>
user2 = First Last Name <email@address.com>
...
SVN va s'arrêter si elle constate un manque SVN utilisateur n'est pas dans le fichier. Mais après que vous pouvez mettre à jour le fichier et pick-up où vous l'avez laissé.
Maintenant, tirez sur le SVN de données à partir de la mise en pension:
git svn clone --stdlayout --no-metadata -A users.txt svn://hostname/path dest_dir-tmp
Cette commande va créer un nouveau repo git en dest_dir-tmp
et commencez à tirer le repo SVN. Notez que le "--stdlayout" drapeau suppose que vous avez la commune "trunk/branches/tags" svn mise en page. Si votre mise en page diffère, de se familiariser avec --tags
, --branches
, --trunk
options (en général, git svn help
).
Toutes les communes protocoles sont autorisés : svn://, http://, https://. L'url devrait cibler les dépôts de base, quelque chose comme http://svn.mycompany.com/myrepo/repository. Qui doit pas inclure /trunk
, /tag
ou /branches
.
Si un nom d'utilisateur n'est pas trouvé, la mise à jour de votre users.txt
le fichier:
cd dest_dir-tmp
git svn fetch
Vous pourriez avoir à répéter la dernière commande plusieurs fois, si vous avez un projet de grande envergure, jusqu'à ce que l'ensemble de la Subversion s'engage ont été récupérés:
git svn fetch
Une fois rempli, git va checkout SVN trunk
dans une nouvelle direction. Toutes les autres branches sont le programme d'installation comme les télécommandes. Vous pouvez afficher les autres branches du SVN avec:
git branch -r
Si vous voulez garder les autres à distance des branches dans votre pension, vous souhaitez créer une branche locale pour chacun manuellement. Si vous ne le faites pas, les branches n'obtiendrez pas cloné dans l'étape finale.
git checkout -b local_branch remote_branch
# it's ok if local_branch and remote_branch are the same name
Les balises sont importés comme des branches. Vous devez créer une branche locale, faire un tag et supprimer la branche de les avoir comme des balises dans git. De le faire avec le tag "v1":
git checkout -b tag_v1 remotes/tags/v1
git checkout master
git tag v1 tag_v1
git branch -D tag_v1
Cloner votre dépôt GIT-SVN repo dans un récipient propre repo git:
git clone dest_dir-tmp dest_dir
rm -rf dest_dir-tmp
cd dest_dir
Les branches locales que vous avez créé plus tôt à partir de branches distantes va seulement ont été copiés à distance des branches dans le nouveau cloné référentiel. Pour chaque branche que vous souhaitez conserver:
git checkout -b local_branch origin/remote_branch
Enfin, la suppression de la distance à partir de votre propre repo git qui pointe vers le maintenant supprimé temp repo:
git remote rm origin