documentation: begin documenting our use of git submodules

git submodules have some surprising behaviour, and we make full use
of it.  Start building a canonical resource for that so developers
can spend their time on better things than on fighting git.

Change-Id: I5aa721e9b0acb2912a057858fd23a1d59d845ed1
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/8371
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
Patrick Georgi 2015-02-05 23:36:32 +01:00 committed by Patrick Georgi
parent b32bf54c31
commit 3c28d014b7
1 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,46 @@
Use of git submodules in coreboot
=================================
coreboot uses git submodules to keep certain parts of the tree separate,
with two major use cases:
First, we use a vendor tool by NVIDIA for systems based on their SoC
and since they publish it through git, we can just import it into our
tree using submodules.
Second, lots of boards these days require binaries and we want to keep
them separate from coreboot proper to clearly delineate shiny Open Source
from ugly blobs.
Since we don't want to impose blobs on users who really don't need them,
that repository is only downloaded and checked out on explicit request.
Handling submodules
-------------------
For the most part, submodules should be automatically checked out on the
first execution of the coreboot Makefile.
To manually fetch all repositories (eg. when you want to prepare the tree
for archiving, or to use it without network access), run
$ git submodule update --init --checkout
This also checks out the binaries below `3rdparty/`
Mirroring coreboot
------------------
When running a coreboot mirror to checkout from, for full operation, you
should also mirror the blobs and nvidia-cbootimage repository, and place
them in the same directory as the coreboot repository mirror.
That is, when residing in coreboot's repository, `cd ../blobs.git`
should move you to the blobs repository.
With that, no matter what the URL of your coreboot repository is, the
git client (of a sufficiently new version) is able to pick up the other
repositories transparently.
Minimum requirements
--------------------
git needs to be able to handle relative paths to submodule repositories,
and it needs to know about non-automatic submodules.
For these features, we require git version 1.7.6.1 or newer.