web-dev-qa-db-ja.com

MercurialリポジトリをGitサブモジュールとして使用する方法はありますか?

私はプロジェクトが依存しているすべてのライブラリーを追跡するために、サブモジュールを楽しく使っています。問題は、公開されているMercurialリポジトリのみを持つcore-plotというライブラリを使用していることです。おそらく読み取り専用のGitリポジトリでミラーリングできますが、これは私が得た最良のオプションですか? MercurialにはGitで物事を追跡するためのモジュールがあるのを見てきました。誰かが逆の方法が存在するかどうか知っていますか?

59
dvicino

git-hg を使用します。

まず、メインリポジトリの下に(Mercurial以外の)gitサブモジュールがあることを確認します。他のサブモジュールがまだない場合は、core-plot以外のライブラリ用のダミーサブモジュールを作成します。たとえば、次のようにします。

main-repo $ git submodule add https://repo.url.com/repo.git repo

次に、core-plotライブラリをいくつかのディレクトリに複製します。

main-repo $ git-hg clone  https://code.google.com/p/core-plot/ core-plot

新しいリポジトリをサブモジュールリストに追加します。

main-repo $ git submodule add ./core-plot core-plot
main-repo $ git commit -am "added core-plot submodule"

これ以降、このリポジトリからのクローンは両方のリポジトリをプルします。 (サブモジュールの初期化と更新の後)。

私がこれまでに見つけたいくつかの問題は:

  • ベアにプッシュする場合、リポジトリリンクとディレクトリはベアに作成されますが、リポジトリはその中に複製されず、そのベアからプルする他のユーザーはコアプロットライブラリを取得できません。
  • コアプロットを更新する必要がある場合は、git-hgを含むものをgit-hg pullにする必要があります。

逆の質問 git submodule from Hg repo? もStackOverflowで質問されます。最良の答えは、プロジェクト hg-git およびgit-hgについて言及しています。もう1つの関連する逆の質問は、 Mercurial に変換されたリポジトリでGitサブモジュールを処理する方法です。

25
Jim DeLaHunt

私の経験では、最もアクティブな非gitプロジェクトには、GitHubに浮かぶ最新のgitミラーがあります。 core-plotにもあるようです:

https://github.com/djw/core-plot

ミラーリングを設定した人に依存したい場合は、サブモジュールを配置するのが最も簡単なオプションのようです。

15
phinze