Преобразование папки Mercurial в репозиторий Git
У меня нет большого опыта работы с Mercurial, я в основном парень Git.
Я хотел бы отразить конкретную папку/файл Mercurial в репозитории Git. На самом деле я пытаюсь экспортировать историю файла из хранилища Mercurial в Git и иметь возможность синхронизировать его с будущими коммитами.
Есть ли у вас какие-либо предложения о том, как действовать? Я считаю, что путь должен состоять в том, чтобы получить историю исправления Mercurial, периодически экспортировать каждое отдельное сообщение как патч и применять исправления Mercurial к репозиторию Git.
Ответы
Ответ 1
В Linux или что-нибудь с bash/sh
или аналогичным, или с python
, попробуйте быстрый экспорт:
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
Ответ 2
Windows: расширение TortoiseHG Hg-Git
Hg-Git можно использовать для преобразования хранилища Mercurial в Git. Вы можете использовать локальный или удаленный репозиторий, доступ к которому осуществляется через SSH, HTTP или HTTPS.
Пример конвертации локальных репозиториев.
Установите Hg-Git.
В Windows TortoiseHg поставляется с Hg-Git, хотя вам необходимо включить его с помощью инструмента настройки (в разделе расширений)
![TortoiseHg Settings]()
или вручную в ~/mercurial.ini
[extensions]
hggit =
Используйте следующие команды для преобразования хранилища:
$ mkdir git-repo; cd git-repo; git init; cd ..
$ cd hg-repo
$ hg bookmarks hg
$ hg push ../git-repo
Закладка hg
необходима для предотвращения проблем, так как в противном случае hg-git выдвигает текущую извлеченную ветку, сбивая с толку Git. Это создаст ветку с именем hg
в репозитории Git. Чтобы получить изменения в мастере, используйте следующие команды (необходимо только при первом запуске, позже просто используйте git merge
или rebase
):
$ cd git-repo
$ git checkout -b master hg
Ответ 3
Вы можете (со стороны Mercurial):
- используя расширение Convert с
--filemap
преобразуйте часть оригинального репо в меньший с необходимыми файлами | каталогами - с расширением hg-git push раздетого репо в Git
или (вместо hg-git), используя Mercurial bridge в Git, clone | pull репозиторий из Git
Ответ 4
Gitify
Кажется, что это более современная и простая в использовании альтернатива для преобразования
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
Ответ 5
Я точно написал, как это сделать: Push to GitHub с использованием Mercurial. Я использую эту технику для того, чтобы на протяжении нескольких лет выталкивать несколько репозиториев Mercurial в GitHub без проблем.
Ответ 6
На Windows может быть немного сложнее. После включения нужных плагинов в hggit
(hggit
), TortoiseHG также может быть использован.
- Клон ртутного репо
- Клон Git РЕПО
- Включить консоль: Включение консоли
-
Используя консоль:
% hg bookmarks hg
% hg push <relative path to>/<git-repo>
Ответ 7
HG-ГИТ-быстро-импорт
https://github.com/kilork/hg-git-fast-import
Еще одна утилита со следующими функциями:
- Импорт одного и нескольких хранилищ Mercurial в Git.
- Импорт новых ревизий из ранее импортированных репозиториев Mercurial в репозиторий Git.
- Теги.
- Закрытые ветки.
- Проверка конечного результата с помощью diff.
Вы можете загрузить двоичный файл для вас платформы и поставить где - то в пути или установить с cargo
(требуется rust
быть установлена):
cargo install hg-git-fast-import
Тогда использование будет таким:
hg-git-fast-import single /path/to/source_hg /path/to/target_git
Для этого не нужно устанавливать Python
и Mercurial
. Расширенная настройка позволяет заменять авторов или ветки, делать префиксы веток и многое другое.
Ответ 8
Конвертировать репозиторий Mercurial в Git в Windows 10
Если нет проблем с кодировкой - используйте расширение TortoiseHG Hg-Git
md new-repo && cd new-repo
git init --bare .git
cd ..\old-mercurial-repo
hg bookmark -r default master
hg push ..\new-repo
cd ..\new-repo
git config --bool core.bare false
Если что-то не так с кодировкой - используйте быстрый экспорт
Установить Bash
Откройте PowerShell от имени администратора и запустите:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Установите Ubuntu 16.04 LTS из Магазина Майкрософт
Откройте Bash и запустите
установить Mercurial
sudo -s
apt-get update
apt install mercurial
get-export v180317 (в настоящее время версии после 180317 работают некорректно)
cd /mnt/c/path_to_work_folder
git clone https://github.com/frej/fast-export.git
cd fast-export
git checkout tags/v180317
cd ..
конвертировать репозиторий
git init new-repo && cd new-repo
git config core.ignoreCase false && git config core.quotepath off
../fast-export/hg-fast-export.sh -r ../path_to_mercurial_repo/ --fe cp1251
git checkout master
параметры кодирования:
- Кодировка
-f
, например, -f cp1251
--fe
кодировка имени файла как --fe cp1251