2012 年 6 月からの更新。現在、開発者が git 側から作業したい場合、Git/Hg の相互運用性のために次の方法があるようです。
Mercurial とhg-git 拡張機能をインストールします。後者は、パッケージ マネージャーを使用するか、easy_install hg-git
. 次に、~/.hgrc に以下が含まれていることを確認します。
[extensions]
hggit =
ここでも拡張子の指定について言及している参照がいくつか見られるかもしれませbookmarks
んが、これは v 1.8 から Mercurial に組み込まれています。Windows に hg-git をインストールする際のヒントをいくつか紹介します。
hg-git があれば、上記の Abderrahim Kitouni のようなコマンドを大まかに使用できます。ただし、このメソッドは2009 年から改良および調整されており、フレンドリーなラッパーgit-hg-again があります。これにより、最上位ディレクトリが Mercurial と Git の両方の作業ディレクトリとして同時に使用されます。default
Mercurial リポジトリの (名前のない) ブランチの先端と同期する Mercurial ブックマークを作成し、そのブックマークからローカル Git ブランチを更新します。
git-remote-hghg-git
は別のラッパーで、これも Mercurial拡張に基づいていこれはさらにgit-remote-helpers
プロトコルを利用します (そのため、その名前が付けられました)。Git 作業ディレクトリにのみトップレベル ディレクトリを使用します。Mercurial リポジトリをむき出しのままにします。また、Git と Mercurial の間の同期をより安全に、より慣用的に git に似せるために、2 つ目の裸の Git リポジトリも維持します。
git-hgスクリプト (以前はここで管理されていましたhg-fast-export
) は、fast-export プロジェクトに基づく別の方法を使用します。方法 2 と同様に、これもベア Mercurial リポジトリと追加のベア Git リポジトリを保持します。
プルの場合、このツールは Mercurial ブックマークを無視し、代わりにすべての名前付き Mercurial ブランチを Git ブランチにインポートし、デフォルト (名前のない) Mercurial ブランチを master にインポートします。
一部の解説では、このツールは hg->git のみであると説明されていますが、 2011 年 12 月 7 日に git->hg プッシュ サポートに統合されたと主張しています。プッシュ サポートは機能しないようです。
git-remote-hg という別のプロジェクトもあります。上記のバージョンとは異なり、これは hg-git に依存せず、代わりに Mercurial Python API に直接アクセスします。現時点では、これを使用するには、パッチを適用したバージョンの git も必要です。私はまだこれを試していません。
最後に、Tailorは、さまざまな異なる VCS 間で段階的に変換するプロジェクトです。これの開発は積極的に続けられないようです。
これらのアプローチの最初の 3 つは、調査するよう説得するのに十分軽量に見えました。それらを自分のセットアップで実行するには、いくつかの方法でそれらを微調整する必要があり、それらを改善するためにさらに微調整する方法がいくつかありました。次に、それらをさらに微調整して、相互に似た動作をするようにし、評価できるようにしました。それらをより効果的に。次に、同じ評価を行うために、他の人もこれらの調整をしたいと思うかもしれないと思いました. そこで、最初の 3 つのツールの私のバージョンをインストールできるようにするソース パッケージを作成しました。また、必要なhg-fast-export
部品のインストールにも注意を払う必要があります。hg-git
(ご自身でインストールする必要があります。)
それらを試してみて、何が最適かを自分で決めることをお勧めします。これらのツールが壊れるケースについて聞いてうれしいです。私はそれらをアップストリームの変更と同期させ、アップストリームの作成者が私が有用だと思う調整を確実に認識できるように努めます。
git-hg
上で述べたように、これらのツールを評価する際に、プッシュではなく Mercurial からのプルにのみ使用できるという結論に達しました。
関連して、Git と Mercurial の便利な比較/翻訳マニュアルがいくつかあります。場合によっては、Git を既に知っているユーザーを対象としています。