web-dev-qa-db-ja.com

MercurialフォルダーをGitリポジトリーに変換する

私はMercurialで大きな経験はありません。私は主にGitの男です。

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

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

122
Simone Carletti

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
118
Yohann

Windows:TortoiseHG Hg-Git拡張機能

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

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

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

    • Windowsでは、Hg-Gitに TortoiseHg が付属していますが、設定ツール(拡張機能セクション)を使用して enable it が必要です

      TortoiseHg Settings

      または手動で~/Mercurial.ini

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

    $ 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
45
naXa

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

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

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

12
Lazy Badger

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
10
sorin

ここでこれを行う方法を正確に書きました: Mercurialを使用してGitHubにプッシュ 。私はこの手法を使用して、Mercurialの複数のリポジトリをGitHubに1年以上プッシュしましたが、問題はありませんでした。

2
glyphobet

hg-git-fast-import

https://github.com/kilork/hg-git-fast-import

次の機能を備えた別のユーティリティ:

  1. 単一および複数のMercurialリポジトリをGitリポジトリにインポートします。
  2. 以前にインポートしたMercurialリポジトリからGitリポジトリへの新しいリビジョンのインポート。
  3. タグ。
  4. 閉じた枝。
  5. 差分による最終結果の検証。

あなたはあなたのためにバイナリをダウンロードすることができます platform パスのどこかに置くか、cargoでインストールします(Rustinstalled である必要があります):

cargo install hg-git-fast-import

使用方法は次のとおりです。

hg-git-fast-import single /path/to/source_hg /path/to/target_git

PythonMercurialをインストールする必要はありません。高度な構成により、作成者やブランチを置き換えたり、ブランチにプレフィックスを付けたりすることができます。

0

Windowsでは少し注意が必要です。 Mercurial(hggit)で適切なプラグインを有効にした後、TortoiseHGも使用できます。

  1. クローンマーキュリアルレポ
  2. Gitリポジトリのクローン
  3. コンソールを有効にする: コンソールを有効にする
  4. コンソールの使用:

    % hg bookmarks hg

    % hg Push <relative path to>/<git-repo>

0
Ivasan