私はMercurialで大きな経験はありません。私は主にGitの男です。
Gitリポジトリの特定のMercurialフォルダー/ファイルをミラーリングしたいと思います。私が実際にやろうとしているのは、MercurialリポジトリからGitにファイルの履歴をエクスポートし、これを将来のコミットと同期させることです。
進め方について何か提案はありますか?その方法は、Mercurialパッチの履歴を取得し、すべてのコミットをパッチとして定期的にエクスポートし、MercurialパッチをGitリポジトリに適用することだと考えています。
OnLinuxまたは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
Hg-Git は、MercurialリポジトリをGitに変換するために使用できます。 SSH、HTTP、またはHTTPS経由でアクセスするローカルリポジトリまたはリモートリポジトリを使用できます。
Hg-Gitをインストールします。
Windowsでは、Hg-Gitに TortoiseHg が付属していますが、設定ツール(拡張機能セクション)を使用して enable it が必要です
または手動で~/Mercurial.ini
[extensions]
hggit =
次のコマンドを使用して、リポジトリを変換します。
$ mkdir git-repo; cd git-repo; git init; cd ..
$ cd hg-repo
$ hg bookmarks hg
$ hg Push ../git-repo
hg
ブックマークは、Ggを混乱させる現在チェックアウトされているブランチにhg-gitがプッシュするような問題を防ぐために必要です。これにより、Gitリポジトリにhg
という名前のブランチが作成されます。マスターで変更を取得するには、次のコマンドを使用します(最初の実行でのみ必要で、後でgit merge
またはrebase
):
$ cd git-repo
$ git checkout -b master hg
次のことができます(Mercurial側から):
--filemap
オプションは、元のリポジトリの一部を必要なファイルのみでより小さなものに変換します|ディレクトリまたは(hg-gitの代わりに) GitのMercurialブリッジ を使用して、Gitからclone | pullリポジトリ
変換を実行するためのより現代的で使いやすい代替手段のようです 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
ここでこれを行う方法を正確に書きました: Mercurialを使用してGitHubにプッシュ 。私はこの手法を使用して、Mercurialの複数のリポジトリをGitHubに1年以上プッシュしましたが、問題はありませんでした。
https://github.com/kilork/hg-git-fast-import
次の機能を備えた別のユーティリティ:
あなたはあなたのためにバイナリをダウンロードすることができます platform パスのどこかに置くか、cargo
でインストールします(Rust
は installed である必要があります):
cargo install hg-git-fast-import
使用方法は次のとおりです。
hg-git-fast-import single /path/to/source_hg /path/to/target_git
Python
とMercurial
をインストールする必要はありません。高度な構成により、作成者やブランチを置き換えたり、ブランチにプレフィックスを付けたりすることができます。
Windowsでは少し注意が必要です。 Mercurial(hggit
)で適切なプラグインを有効にした後、TortoiseHGも使用できます。
コンソールの使用:
% hg bookmarks hg
% hg Push <relative path to>/<git-repo>