142

私は Mercurial の経験があまりなく、主に Git を使用しています。

Git リポジトリ内の特定の Mercurial フォルダー/ファイルをミラーリングしたいと考えています。私が実際にやろうとしているのは、ファイルの履歴を Mercurial リポジトリから Git にエクスポートし、これを将来のコミットと同期させることです。

続行する方法について何か提案はありますか?Mercurial パッチの履歴を取得し、定期的にすべてのコミットをパッチとしてエクスポートし、Mercurial パッチを Git リポジトリに適用することをお勧めします。

4

8 に答える 8

125

Linuxなどでは、または類似のものを使用して、高速エクスポートを試してください。bash/shpython

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
于 2012-05-22T21:16:01.013 に答える
64

Windows: TortoiseHG Hg-Git 拡張機能

Hg-Gitを使用して、Mercurial リポジトリを Git に変換できます。SSH、HTTP、または HTTPS 経由でアクセスするローカル リポジトリまたはリモート リポジトリを使用できます。

ローカル リポジトリの変換の例。

  1. Hg-Git をインストールします。

  2. 次のコマンドを使用して、リポジトリを変換します。

    $ 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 リポジトリに指定されたブランチが作成されます。master の変更を取得するには、次のコマンドを使用します (最初の実行でのみ必要で、後でgit mergeまたはを使用するだけですrebase)。

$ cd git-repo
$ git checkout -b master hg
于 2015-08-05T09:03:45.023 に答える
13

(Mercurial 側から) 次のことができます。

  • Convert extensionをオプションで使用して--filemap、元のレポの一部を必要なファイルのみでより小さいものに変換する|ディレクトリ
  • hg-git 拡張機能を使用して、ストリップされたレポを Git にプッシュします

または (hg-git の代わりに)、Git で Mercurial ブリッジを使用して、Gitからリポジトリを clone|pull します

于 2013-03-05T12:32:23.413 に答える
11

ジティファイ

変換を実行するためのよりモダンで使いやすい代替手段のよう です 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
于 2015-03-25T18:21:51.660 に答える