Shallow commits
===============

.Definition
*********************************************************
Shallow commits do have parents, but not in the shallow
repo, and therefore grafts are introduced pretending that
these commits have no parents.
*********************************************************

The basic idea is to write the SHA-1s of shallow commits into
$GIT_DIR/shallow, and handle its contents like the contents
of $GIT_DIR/info/grafts (with the difference that shallow
cannot contain parent information).

This information is stored in a new file instead of grafts, or
even the config, since the user should not touch that file
at all (even throughout development of the shallow clone, it
was never manually edited!).

Each line contains exactly one SHA-1. When read, a commit_graft
will be constructed, which has nr_parent < 0 to make it easier
to discern from user provided grafts.

Since fsck-objects relies on the library to read the objects,
it honours shallow commits automatically.

There are some unfinished ends of the whole shallow business:

- maybe we have to force non-thin packs when fetching into a
  shallow repo (ATM they are forced non-thin).

- A special handling of a shallow upstream is needed. At some
  stage, upload-pack has to check if it sends a shallow commit,
  and it should send that information early (or fail, if the
  client does not support shallow repositories). There is no
  support at all for this in this patch series.

- Instead of locking $GIT_DIR/shallow at the start, just
  the timestamp of it is noted, and when it comes to writing it,
  a check is performed if the mtime is still the same, dying if
  it is not.

- It is unclear how "push into/from a shallow repo" should behave.

- If you deepen a history, you'd want to get the tags of the
  newly stored (but older!) commits. This does not work right now.

To make a shallow clone, you can call "git-clone --depth 20 repo".
The result contains only commit chains with a length of at most 20.
It also writes an appropriate $GIT_DIR/shallow.

You can deepen a shallow repository with "git-fetch --depth 20
repo branch", which will fetch branch from repo, but stop at depth
20, updating $GIT_DIR/shallow.

The special depth 2147483647 (or 0x7fffffff, the largest positive
number a signed 32-bit integer can contain) means infinite depth.
