| repo Manifest Format (submodule) |
| ================================ |
| |
| A repo manifest describes the structure of a repo client; that is |
| the directories that are visible and where they should be obtained |
| from with git. |
| |
| The basic structure of a manifest is a bare Git repository holding |
| a 'gitmodules' file in the top level directory, and one or more |
| gitlink references pointing at commits from the referenced projects. |
| This is the same structure as used by 'git submodule'. |
| |
| Manifests are inherently version controlled, since they are kept |
| within a Git repository. Updates to manifests are automatically |
| obtained by clients during `repo sync`. |
| |
| .gitmodules |
| =========== |
| |
| The '.gitmodules' file, located in the top-level directory of the |
| client's working tree (or manifest repository), is a text file with |
| a syntax matching the requirements of 'git config'. |
| |
| This file contains one subsection per project (also called a |
| submodule by git), and the subsection value is a unique name to |
| describe the project. Each submodule section must contain the |
| following required keys: |
| |
| * path |
| * url |
| |
| submodule.<name>.path |
| --------------------- |
| |
| Defines the path, relative to the top-level directory of the client's |
| working tree, where the project is expected to be checked out. The |
| path name must not end with a '/'. All paths must be unique within |
| the .gitmodules file. |
| |
| At the specified path within the manifest repository a gitlink |
| tree entry (an entry with file mode 160000) must exist referencing |
| a commit SHA-1 from the project. This tree entry specifies the |
| exact version of the project that `repo sync` will synchronize the |
| client's working tree to. |
| |
| submodule.<name>.url |
| -------------------- |
| |
| Defines a URL from where the project repository can be cloned. |
| By default `repo sync` will clone from this URL whenever a user |
| needs to access this project. |
| |
| submodule.<name>.revision |
| ------------------------- |
| |
| Name of the branch in the project repository that Gerrit Code Review |
| should automatically refresh the project's gitlink entry from. |
| |
| If set, during submit of a change within the referenced project, |
| Gerrit Code Review will automatically update the manifest |
| repository's corresponding gitlink to the new commit SHA-1 of |
| this branch. |
| |
| Valid values are a short branch name (e.g. 'master'), a full ref |
| name (e.g. 'refs/heads/master'), or '.' to request using the same |
| branch name as the manifest branch itself. Since '.' automatically |
| uses the manifest branch, '.' is the recommended value. |
| |
| If this key is not set, Gerrit Code Review will NOT automatically |
| update the gitlink. An unset key requires the manifest maintainer |
| to manually update the gitlink when it is necessary to reference |
| a different revision of the project. |
| |
| submodule.<name>.update |
| ----------------------- |
| |
| This key is not supported by repo. If set, it will be ignored. |
| |
| .review |
| ======= |
| |
| The optional '.review' file, located in the top-level directory of |
| the client's working tree (or manifest repository), is a text file |
| with a syntax matching the requirements of 'git config'. |
| |
| This file describes how `repo upload` should interact with the |
| project's preferred code review system. |
| |
| review.url |
| ---------- |
| |
| URL of the default Gerrit Code Review server. If a project does |
| not have a specific URL in the '.review' file, this default URL |
| will be used instead. |
| |
| review.<name>.url |
| ----------------- |
| |
| Project specific URL of the Gerrit Code Review server, for the |
| submodule whose project name is <name>. |
| |
| Example |
| ======= |
| |
| $ cat .gitmodules |
| [submodule "app/Clock"] |
| path = clock |
| url = git://vcs.example.com/ClockWidget.git |
| revision = . |
| [submodule "app/Browser"] |
| path = net/browser |
| url = git://netgroup.example.com/network/web/Browser.git |
| revision = . |
| |
| $ cat .review |
| [review] |
| url = vcs-gerrit.example.com |
| [review "app/Browser"] |
| url = netgroup.example.com |
| |
| In the above example, the app/Clock project will send its code |
| reviews to the default server, vcs-gerrit.example.com, while |
| app/Browser will send its code reviews to netgroup.example.com. |
| |
| See Also |
| ======== |
| |
| * http://www.kernel.org/pub/software/scm/git/docs/gitmodules.html |
| * http://www.kernel.org/pub/software/scm/git/docs/git-config.html |
| * http://code.google.com/p/gerrit/ |