2016-12-13 22 views
0

私はリポAを持っていると推測し、それはサブモジュールA.1 A.2です。リポジトリがサブモジュールであるかどうかを知る方法

私は

git clone --recursive https://github.com/A/A.git . 

を実行する場合は、メインリポジトリのクローンを作成し、それがサブモジュールです。

しかし、私は実行する場合:

git clone --recursive https://github.com/A/A1.git . 

私はメインのレポと他のサブモジュールを扱うことができる何かを実行することはできませんか?

答えて

3

リポジトリがサブモジュールであるかどうかを知ることはできません。サブモジュールとして別の場所で使用される各リポジトリは、独自のスタンドアロンリポジトリです。サブモジュールが他のリポジトリで使用されていることは、そのマスターリポジトリ(またはリポジトリ)によって完全に定義されていることです。 1つのリポジトリを、任意の量のマスターリポジトリのサブモジュールリポジトリとしても使用できます。これは、「パッケージjava.util.regexが他のパッケージで使用されていることを知るにはどうすればよいですか?」または「log4jが他のソフトウェアによってライブラリとして使用されていることを知るにはどうすればよいですか?

1

すべてのサブモジュールが本格的な適切なリポジトリであるため、100%確実に知る方法があるかどうかはわかりません。ただし、サブモジュールを使用してレポをクローンすると、.gitフォルダーを持つメイン(最上位)レポに対して、サブモジュールフォルダーのファイルが.gitになります。このようにして:あなたはトップレベルのレポにしている場合は、サブモジュールと0になら

test -d .git; echo $? 

1を印刷します。それはまた、サブフォルダ内から動作させるために:

(cd `git rev-parse --show-toplevel` && test -d .git); echo $? 

シェルスクリプトでこれを使用している場合は、echoもちろんの戻り値への必要はありません、あなただけの直接サブシェルの結果を使用することができます。

+0

それは問題ではありませんでしたか? OPはあなた自身がサブモジュールレポをチェックアウトしているかどうか、他のいくつかのレポでサブモジュールとして使用されていることをどのように伝えているのか、そしておそらく自動的にマスターレポと他の兄弟サブレポを自動的に得ることはできません。 – Vampire

+1

@Vampire質問がサブモジュールを考慮したスクリプティングであるのか、サブモジュール後にマスターをチェックアウトするのかが完全にはっきりしていません。あなたの解釈が正しければあなたの答えもそうです。私はそれを上書きしています。 – DUman

+0

このコマンドは、一番上のレポをダウンロードした場合にのみ機能します。 "subrepo"をダウンロードするだけであれば、.gitは存在します –

関連する問題