Je n'ai pas une grande expérience avec Mercurial, je suis surtout un gars Git.
J'aimerais mettre en miroir un dossier/fichier Mercurial spécifique dans un référentiel git. Ce que je cherche à faire, c’est d’exporter l’historique d’un fichier d’un référentiel Mercurial vers Git et de pouvoir le synchroniser avec les futurs commits.
Avez-vous des suggestions sur la façon de procéder? Je pense que la solution consiste à obtenir l'historique du correctif Mercurial, à exporter périodiquement chaque commit en tant que correctif et à appliquer les correctifs Mercurial au référentiel Git.
Essayez avec exportation rapide :
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/Mercurial_repo
git checkout HEAD
Hg-Git peut être utilisé pour convertir un référentiel Mercurial en Git. Vous pouvez utiliser un référentiel local ou un référentiel distant accessible via SSH, HTTP ou HTTPS.
Installez Hg-Git.
Sous Windows, TortoiseHg est fourni avec Hg-Git, bien que vous ayez besoin de l'activer via l'outil de paramétrage (dans la section extensions)
ou manuellement dans ~/Mercurial.ini
[extensions]
hggit =
Utilisez les commandes suivantes pour convertir le référentiel:
$ mkdir git-repo; cd git-repo; git init; cd ..
$ cd hg-repo
$ hg bookmarks hg
$ hg Push ../git-repo
Le marque-page hg
est nécessaire pour éviter les problèmes, sinon hg-git envoie le fichier à la branche actuellement extraite qui déroute Git. Cela créera une branche nommée hg
dans le référentiel Git. Pour obtenir les modifications dans le maître, utilisez les commandes suivantes (nécessaires uniquement lors de la première exécution, puis utilisez simplement git merge
ou rebase
):
$ cd git-repo
$ git checkout -b master hg
Vous pouvez (du côté de Mercurial):
--filemap
Convertir une partie du dépôt original en plus petit avec seulement les fichiers nécessaires | répertoiresou (au lieu de hg-git), en utilisant Mercurial bridge dans Git , référentiel de clone | pull de Git
Cela semble être une alternative plus moderne et facile à utiliser pour effectuer la conversion https://github.com/buchuki/gitifyhg
pip install gitifyhg
git clone gitifyhg::<hgrepoaddress>
# done, you have a git repo with the entire history of the hg one
J'ai écrit exactement comment faire cela ici: Push to GitHub en utilisant Mercurial . J'utilise cette technique pour transférer plusieurs dépôts Mercurial vers GitHub depuis plus d'un an, sans aucun problème.
https://github.com/kilork/hg-git-fast-import
Un autre utilitaire avec les fonctionnalités suivantes:
Vous pouvez télécharger le binaire pour vous plate-forme et mettre quelque part dans le chemin ou l'installer avec cargo
(nécessite Rust
pour être installé ):
cargo install hg-git-fast-import
Alors l'utilisation est comme ceci:
hg-git-fast-import single /path/to/source_hg /path/to/target_git
Il n'est pas nécessaire que Python
et Mercurial
soient installés. La configuration avancée permet de remplacer les auteurs ou les branches, de créer des branches avec le préfixe, etc.
Sous Windows, cela peut être un peu délicat. Après avoir activé les bons plugins dans Mercurial (hggit
), TortoiseHG peut également être utilisé.
En utilisant la console:
% hg bookmarks hg
% hg Push <relative path to>/<git-repo>