Je devais simplement m'attaquer à ce problème moi-même. J'ai une machine Windows XP avec un serveur Windows séparé hébergeant VisualSVN Server .
J'ai également installé TortoiseHG ainsi que le client de ligne de commande CollabNet Subversion .
<Enable Convert Extension w/ Tortoise Hg 2>
Un grand merci à bgever pour avoir souligné dans les commentaires qu'avec TortoiseHg 2.0, activer l'extension de conversion est plus facile que jamais. Comme il dit
Avec TortoiseHG 2.0, cela a été beaucoup plus simple: Démarrez TortoiseHG Workbench à partir du menu Démarrer. Sélectionnez Fichier -> Paramètres. Sélectionnez Extensions dans la liste. Cochez la case «convertir» et cliquez sur OK. C'est tout! Plus besoin d'essayer de générer le fichier de configuration et de le rechercher dans le système de fichiers. - bgever 11 mars à 7:56
</Enable Convert Extension w/ Tortoise Hg 2>
<Enable Convert Extension Manually>
Pour convertir un référentiel de SVN en HG, j'ai suivi ces étapes:
1) Ouvrez C: \ Program Files \ TortoiseHg \ Mercurial.ini
ÉDITER
FYI - Tortoise Hg a migré ce fichier vers
- XP ou version antérieure - C: \ Documents and Settings \ USERNAME \ Mercurial.ini
- Vista ou version ultérieure - C: \ Users \ USERNAME \ Mercurial.ini
Ce fichier sera pour la plupart vide et vous listerez simplement ce que vous aimeriez remplacer. Si c'est ce que vous avez, ajoutez simplement ces deux lignes à la toute fin du fichier:
[extensions]
convert =
2) Recherchez la ligne commençant par
[extensions]
3) En dessous, vous verrez une liste de mots-clés, commentés par un point-virgule (;) sur chaque ligne
4) Trouvez la ligne qui dit
; convertir =
et supprimez le point-virgule pour qu'il se lit
convertir =
</Enable Convert Extension Manually>
5) Ouvrez l'invite de commande et accédez au répertoire dans lequel vous souhaitez créer le nouveau dossier hg (le processus créera un nouveau dossier appelé yoursvnreponame-hg dans le répertoire dans lequel l'invite de commande est ouverte).
6) Utilisez cette commande
hg convertir le fichier: /// y: / yoursvnreponame
J'ai trouvé que l'outil de conversion pouvait avoir des problèmes avec les référentiels en réseau, j'ai donc dû mapper un lecteur dessus, mais cela a très bien fonctionné pour moi.
la source
Mercurial a une extension de conversion intégrée pour cela .
la source
Pour convertir un SVN Repo en HG Repo ET le copier sur un autre serveur, vous aurez besoin de quelques éléments.
convert
extension à Tortoise. Démarrez TortoiseHG Workbench à partir du menu Démarrer. SélectionnezFile -> Settings
. Faites votre choixExtensions
dans la liste. Cochez laconvert
case et cliquez sur OK.D'abord la conversion…
\\server\folder
ne mappez pas le dossier SVN Repo lui-même. Mappez le dossier juste au-dessus) Donnez une lettre au lecteur mappé, commeY:\
CD /D Y:\
Y:\
invite, tapez:hg convert y:/RepoName
(utilisez le nom du Repo actuel) Faites attention aux barres obliques avant et arrière. Celui de la commande est une barre oblique. De plus, si le nom contient des espaces, mettez le nom entre guillemets. (ieY:/"My Repo folder"
)Deuxièmement, le clonage…
File -> Clone Repository
la source
init
le premier référentiel?Personne ne mentionne toujours hgsubversion ( Extension Wiki ), qui peut le faire sans presque aucun mal de tête (hors cas rares et arbre spécifique).
Ajoutez simplement l'extension, activez-la et
hg clone SVN_REPO
au repo mercurial localla source
Ceci est dans la FAQ TortoiseHg :
C'est donc apparemment possible - j'utilise Linux donc je n'ai pas essayé moi-même.
la source
Je viens de convertir un repo SVN distant avec authentification HTTP en un repo Mercurial, et laissez-moi vous dire qu'il n'y a pas beaucoup de documentation sur la façon de procéder. J'ai dû télécharger le source Mercurial et l'installer de manière autonome, en utilisant le paquet source, de cette façon les liaisons SVN fonctionneront correctement.
Je l'ai installé comme:
Ce qui a très bien fonctionné sur ma boîte Server 2003. Je peux maintenant convertir un dépôt SVN de la bonne manière, en faisant quelque chose comme ceci:
La documentation de ConvertExtension sur le site Mercurial n'est pas très claire, mais elle dit ceci:
Alors maintenant, j'utilise simplement la version autonome pour la conversion et TortoiseHg pour le travail réel du VCS.
la source
Mieux vaut tard que jamais ...
Deux réponses pour le prix d'une ...
S'il s'agit d'un dépôt public et open-source, vous pouvez simplement utiliser http://svn2github.com/add/, ce qui a pris environ une demi-heure pour cloner ce dépôt sur GitHib, puis le transférer dans Hg.
L'avantage de l'utilisation
hg convert
est qu'il peut être repris. La conversion de SVN en Hg peut prendre des jours . Si vous arrêtez cela, il reprendra là où il s'était arrêté.Vous trouverez ci-dessous un fichier de commandes que j'ai écrit parce que Codeplex SVNbridge était nul. Le dépôt dans cet exemple a pris quelques jours pour récupérer l'historique complet (je suis en Australie, donc la latence a peut-être été un facteur). J'aimerais penser que cela a donné un bon coup à un serveur TFS quelque part.
Ce fichier de commandes peut être exécuté à tout moment pour extraire les mises à jour de la source SVN si elles se trouvent être les seules qui restent sur Terre encore en utilisant SVN. Je ne l'ai pas testé, alors voyez ce qui se passe si vous faites cela, donc si j'étais vous, j'abandonnerais la branche d'origine si vous voulez modifier le dépôt.
Le
robocopy shamap
truc est de maintenir l'historique SVN si vous clonez le repo Hg, shamap est éphémère - vérifiez le fichier batch et shamap (je le ferais sur une nouvelle branche).le lot ...
la source
Utilisation de l'
convert
extension de Mercurial:convert=
à la[extensions]
section de .hgrc comme ceci:sudo apt-get install python-subversion
hg convert
commandehg convert -h
pour obtenir de l'aidehg convert http://[svnserver]/[Project] --source-type svn [DestinationDir]
(voir note 2)hg push https://[mercurialserver]/[Project]
Remarque : vous pouvez même répéter la commande hg convert pour inclure les nouvelles modifications apportées au référentiel svn après la conversion précédente.
note 2 : lorsque hg convert ne fonctionne pas avec
http://
ousvn://
vous pouvez d'abord extraire le référentiel Subversion (ou mettre à jour un référentiel existant) et convertir en utilisant l'extraction locale; exemple:hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]
la source