SYNOPSIS

$GIT_WORK_TREE/.gitmodules

DESCRIPTION

Git作業ツリーの最上位ディレクトリにある .gitmodules ファイルは、 git-config(1) の構文を持つテキストファイルです。

このファイルには、サブモジュールごとに1つのサブセクションが含まれており、サブセクションの値はサブモジュールの名前です。名前は、 git submodule add--name プションでカスタマイズされていない限り、サブモジュールが追加されたパス名として使用されます。各サブモジュールセクションには、以下の必須キーも含まれています:

submodule.<name>.path

サブモジュールがチェックアウトされると予想される、Git作業ツリーの最上位ディレクトリを基準にしたパスを定義します。 パス名は / で終わらせてはいけません。 すべてのサブモジュールパスは、 .gitmodules ファイル内で一意である必要があります。

submodule.<name>.url

サブモジュールリポジトリのクローンを作成できるURLを定義します。 これは、 git-clone(1) に渡す準備ができている絶対URLか、 ( ./ または ../ で始まる場合)スーパープロジェクトの、元のリポジトリ(superproject’s origin repository)から相対的な場所のいずれかです。

さらに、いくつかのオプションのキーがあります:

submodule.<name>.update

名前付きサブモジュールのデフォルトの更新手順を定義します。 つまり、 スーパープロジェクトで git submodule update コマンドによってサブモジュールがどのように更新されるかを指定します。 この設定は、 git submodule init によって同名の構成変数を初期化する際にのみ使用されます。 許可される値は checkout または rebase または merge または none です。 しかし、 セキュリティ上の理由から !command は使用できません。 詳細については、 git-submodule(1)update コマンドの説明を参照してください。

submodule.<name>.branch

上流サブモジュールの更新を追跡するためのリモートブランチ名。このオプションが指定されていない場合のデフォルトは、リモートのHEADになります。 別な値 . は、サブモジュール内のブランチ名が現在のリポジトリ内の現在のブランチ名と同一でなければならないことを示すために使用されます。詳細については、 git-submodule(1)--remote ドキュメントを参照してください。

submodule.<name>.fetchRecurseSubmodules

このオプションは、このサブモジュールの再帰的フェッチを制御するために使用できます。このオプションがスーパープロジェクトの .git/config のサブモジュールのエントリにも存在する場合、そこでの設定は .gitmodules にある設定を上書きします。コマンドラインで両方の設定を上書きするには、 --[no-]recurse-submodules オプションを git fetchgit pull で使用します。

submodule.<name>.ignore

どのような状況で git status とdiffファミリーがサブモジュールを変更済みとして表示するかを定義します。指定できるのは以下の値です:

all

サブモジュールは変更されたものと見なされることは決してありません(それでも、 ステータスの出力に表示され、 ステージングされたときはコミットします)。

dirty

サブモジュールのワークツリーに対するすべての変更は無視され、 サブモジュールの HEAD とスーパープロジェクトに記録された状態との間のコミットされた差分のみが考慮されます。

untracked

サブモジュール内の非追跡ファイルのみが無視されます。 コミットされた差分および追跡中のファイルへの変更は表示されます。

none

サブモジュールの変更は一切無視されず、 かつ、 コミットされた差分や、 追跡中のファイルおよび非追跡のファイルへの変更すべてが表示されます。 これがデフォルトのオプションです。

このオプションがスーパープロジェクトの .git/config のサブモジュールのエントリにも存在する場合、そこでの設定は .gitmodules にある設定を上書きします。

--ignore-submodules オプションを使用すると、コマンドラインで両方の設定を上書きできます。 git submodule コマンドは、この設定の影響を受けません。

submodule.<name>.shallow

trueに設定すると、ユーザーが明示的に非浅いクローン(non-shallow clone)を要求しない限り、このサブモジュールのクローンは浅いクローン(shallow clone)(履歴の深さ1)として実行されます。

NOTES

Gitは、作業ツリー内の .gitmodules ファイルをシンボリックリンクにすることを許可せず、そのようなツリーエントリのチェックアウトを拒否します。これにより、ファイルがインデックスまたはツリーからアクセスされたときとファイルシステムからアクセスされたときの動作の一貫性が保たれ、Gitがファイルの内容のセキュリティチェックを確実に実施できるようになります。

EXAMPLES

以下の .gitmodules ファイルについて考えてみます:

[submodule "libfoo"]
        path = include/foo
        url = git://foo.com/git/lib.git

[submodule "libbar"]
        path = include/bar
        url = git://bar.com/git/lib.git

これは、libfoolibbar の2つのサブモジュールを定義します。 これらはパス include/fooinclude/bar でチェックアウトされることが期待されており、両方のサブモジュールに対して、サブモジュールのクローン作成に使用できるURLが指定されています。

SEE ALSO

GIT

Part of the git(1) suite