2017-01-11 16 views
4

.gitmoduleファイルにはignore = dirtyがあります。「汚れた」サブモジュールとは何ですか?

例:

[submodule "docs/submodules/netvirt"] 
    path = docs/submodules/netvirt 
    url = ../netvirt 
    branch = . 
    ignore = dirty 

ドキュメントの状態:

「汚い」はサブモジュールに対するすべての変更を無視するには、ツリーを仕事とサブモジュールのHEAD間 違いのみを取り、 をコミットスーパープロジェクトに記録されている。

私はこれが何を意味するのか理解できません。誰かがこれを簡単な言葉で表現できますか?

スーパープロジェクトにサブモジュールを追加したとき、それは状態C(HEAD at C)にありましたが、後で今度は状態F(HEAD at F)になりました。 ignore=dirtyはD、E、Fの変更を検討するだけです(これは何をすべきかです)。

明らかに、私は何か誤解しています。それは何ですか?

+1

非サブモジュールと同じことを意味します。「ダーティ」は、インデックスが「HEAD」と異なり、かつ/または作業ツリーがインデックスと異なることを意味します。各サブモジュールは独自のリポジトリであるため、サブモジュールが汚れているかどうかをテストするには、サブモジュールに「cd」して、リポジトリが汚れているかどうかをテストします。 – torek

+1

ちなみに、あなたの実際の質問がまだわかりません。あなたは何のコマンドを実行していますか、あなたは何を期待していませんか、あなたは何を期待していますか? – torek

+0

私の質問は、コマンドに関する機能ではありません。サブモジュールがいつ「汚い」と呼ばれるのかを理解するだけです – FlyingAura

答えて

3

ここで、「ダーティ」という用語は、Gitの別の場所と同じ意味です。問題のレポは、コミットされていない変更を持つファイル(以前にコミットされたファイル)を追跡しました。 untrackedファイル。

サブモジュールの設定では、サブモジュールが汚れている場合(つまり、コミットされていない変更や変更されていないファイルを追跡した場合)、その変更は無視されます。無視されないことは、チェックアウトされたコミットの違いである。親プロジェクトがCをコミットするが、サブモジュールは現在コミットFがチェックアウトされている。

これらは、サブモジュールのための可能な状態であり、設定ignore = dirtyを持つ親プロジェクトのステータス:

  1. 親プロジェクトに記録されているサブモジュールは、同じチェックアウトコミットしている、作業ディレクトリはきれいです(無修正ませんまたはuntrackedファイル)。親プロジェクトでは、サブモジュールに変更がないと表示されます。
  2. サブモジュールは、親プロジェクトに記録されているものと同じコミットをチェックアウトしています。作業ディレクトリはダーティです(変更されたファイルまたはuntrackedファイルがあります)。親プロジェクトでは、サブモジュールが変更されていないものとして表示されます(ignore = dirty以降)。
  3. サブモジュールは、親プロジェクトで記録されたものとは異なるチェックアウトを持っており、作業ディレクトリはクリーンです。親プロジェクトでは、サブモジュールに変更があることが示されます(コミットハッシュの変更として視覚化されます)。
  4. サブモジュールは、親プロジェクトに記録されたコミットとは異なるチェックアウトを持ち、作業ディレクトリがダーティです。親プロジェクトはサブモジュールに変更があることを示します(まだコミットハッシュの変更として視覚化されているため、ignore = dirty)。
関連する問題