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 submodul eupdate コマンドによってサブモジュールが更新される方法を定義します。これは、同一名称の構成変数を初期化するために git submodule init によってのみ使用されます。 ここで許可される値は、「checkout」、「rebase」、「merge」、「none」です。 それらの意味については、 git-submodule(1) の「update」コマンドの説明を参照してください。セキュリティ上の理由から、「!command」形式は受け入れられません。

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

The submodule will never be considered modified (but will nonetheless show up in the output of status and commit when it has been staged).

dirty

All changes to the submodule’s work tree will be ignored, only committed differences between the HEAD of the submodule and its recorded state in the superproject are taken into account.

untracked

Only untracked files in submodules will be ignored. Committed differences and modifications to tracked files will show up.

none

No modifications to submodules are ignored, all of committed differences, and modifications to tracked and untracked files are shown. This is the default option.

このオプションがスーパープロジェクトの .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