Comment convertir un dépôt git en mercurial?

104

J'ai développé une application java en utilisant git comme référentiel de code source. J'aimerais partager le projet avec d'autres développeurs java et hg semble être le plus utilisé par eux.

Ma question est de savoir comment convertir un dépôt git en hg?

Si j'ai essayé de googler "convertir git en hg" et que chaque résultat de recherche concerne la conversion de hg en git. J'utilise également TortoiseHg .

Spoike
la source
16
Si vous avez besoin de convertir de mercurial en git à la place: stackoverflow.com/questions/883452/...
Christian Oudard
Ce dernier paragraphe n'a pas de sens. Une faute de frappe?
tshepang
1
@Tshepang: Je voulais "git -> hg" mais j'ai obtenu "hg -> git". Je vais éditer cette question mais je suppose que les gens l'ont quand même car il y a des réponses maintenant.
Spoike

Réponses:

79

L' hg convertutilitaire n'est pas activé par défaut après l'installation. Afin de le définir comme tel, ajoutez ce qui suit à votre .hgrcfichier.

[extensions]
hgext.convert=

Si vous utilisez TortoiseHg sous Windows, ce fichier réside dans votre répertoire personnel sous le nom mercurial.ini. Après ce changement de paramètre, vous pourrez utiliser l' hg convertutilitaire.

Spoike
la source
5
Sur Ubuntu, le changement à l'échelle du système peut être effectué dans / etc / mercurial / hgrc
Sentient
1
Sous Windows, en utilisant TortoiseHg, il peut être activé en utilisant l'élément de menu Paramètres globaux du menu d'extension du shell TortoiseHg dans la section Extensions sous Paramètres globaux.
Umar Farooq Khawaja
La description est quelque peu incomplète car elle ne spécifie pas que hg aura besoin d'accéder à git pour la conversion ou bien vous obtenez l'erreur "Impossible de trouver l'outil" git "requis".
jmd
41

En utilisant l' extension Mercurial Convert

Ajoutez les lignes suivantes à votre .hgrcou pour activer l'extension:

[extensions]
hgext.convert=

Et en tapant un

cd src
hg convert --datesort . dst

(même si cela peut entraîner des problèmes ...)

Remarque :: metrix signale que cela pourrait ne pas fonctionner:

     hg convert --datesort src dst

Remarque: il se trouve qu'il y a un bogue avec hg convertsi vous exécutez cette commande à partir d'un répertoire autre que le répertoire source.
Vous obtiendrez l'erreur suivante:

abort: cannot read tags from git-repo4/.git

Confirmé avec git 1.7.9 et Mercurial 2.6.2 sous Windows XP

VonC
la source
Si cette réponse incluait la .hgrcconfiguration au lieu d'un lien vers elle, elle serait complète.
fbmd
17

Vous pouvez consulter l' utilitaire http://hg-git.github.com/ : un plugin Git pour Mercurial

Ce plugin a été développé à l'origine par les gars de GitHub, et permet la conversion depuis git <-> mercurial sans perte. En théorie, vous pourriez même être en mesure de cloner le référentiel hg.

vdboor
la source
2
C'est une meilleure solution que la conversion du référentiel. Ce serait aussi une meilleure réponse, si elle avait plus de détails. Les réponses d'une seule ligne sont presque inutiles.
naught101
1
@ naught101, merci pour la suggestion, j'ai ajouté quelques informations supplémentaires ici à lire directement.
vdboor
après avoir installé et configuré hg-git, utilisez hg gexport et hg gimport pour convertir entre eux.
Bloke CAD
9

Contrôle de révision distribué avec les états Mercurial :

Les outils de contrôle de révision pris en charge par convert sont les suivants:

  • Subversion
  • CVS
  • Git
  • Darcs

Alors peut-être n'avez-vous besoin d'aucun outil supplémentaire?

Bombe
la source
1
Malheureusement, "hg convert" n'est pas disponible dans tortoisehg
Spoike
6

L'extension de conversion peut fonctionner pour vous, mais si ce n'est pas le cas, vous voudrez peut-être consulter tailor qui est un outil général pour la conversion entre les différents SCM distribués.

Luc Francl
la source
2

Vous ne pourriez tout simplement pas le convertir. Utilisez simplement le plugin Hg-Git ! Personne ne saura la différence.

Jay Atkinson
la source
2

Nouveau joueur en ville: git-remote-hg . Il fournit un support de pontage natif dans git.

Juste:

hg init ../hgrepo
git push hg::$PWD/../hgrepo
FelipeC
la source
1

Dans le Gitdossier avec tous mes dépôts Git, j'ai créé le Git2Hg.cmdfichier avec le contenu suivant:

set PATH=%PATH%;C:\Program Files\TortoiseHg
set PATH=%PATH%;C:\Program Files\Git\bin
hg convert %1

Maintenant, je peux convertir un référentiel Git en Hg en tapant ceci dans un CMD:

Git2Hg "Folder Name"
pochoir
la source
0

Plugin Hg-Git ou si vous utilisez pour Windows ou la migration de l'un à l'autre visitez ici 2 [Windows GIT]

Dilshad
la source