Subject: [PATCH 00/16] Narrow/Partial/Sparse checkout

From: Nguyễn Thái Ngọc Duy <[email-masked]>
Date: Sun, 14 Sep 2008 20:07:49 +0700

I hope this series is now ready to be reviewed. Documentation is in
place so no more explanation here (main document is in git-checkout.txt).
The series could be splitted into:

Nguyễn Thái Ngọc Duy (6):
  Extend index to save more flags
  Introduce CE_NO_CHECKOUT bit
  update-index: refactor mark_valid() in preparation for new options
  update-index: add --checkout/--no-checkout to update CE_NO_CHECKOUT bit
  ls-files: add --narrow-checkout option to "will checkout" entries
  Add tests for updating no-checkout entries in index

 .gitignore                         |    1 +
 Documentation/git-ls-files.txt     |    6 +++
 Documentation/git-update-index.txt |   12 ++++++
 Makefile                           |    2 +-
 builtin-ls-files.c                 |   11 ++++++
 builtin-update-index.c             |   40 +++++++++++++--------
 cache.h                            |   66 +++++++++++++++++++++++++++++++++--
 read-cache.c                       |   57 ++++++++++++++++++++++++-------
 t/t2104-update-index-narrow.sh     |   36 +++++++++++++++++++
 test-index-version.c               |   14 ++++++++
 10 files changed, 212 insertions(+), 33 deletions(-)

This adds CE_NO_CHECKOUT bit and plumbing support to manipulate it.
This bit is to mark what entry will be checked out.

Nguyễn Thái Ngọc Duy (4):
  Prevent diff machinery from examining worktree outside narrow checkout
  checkout_entry(): CE_NO_CHECKOUT on checked out entries.
  ls-files: apply --deleted on narrow area only
  grep: skip files that have not been checked out

 builtin-grep.c                 |    7 ++++++-
 builtin-ls-files.c             |    2 +-
 diff-lib.c                     |    5 +++--
 diff.c                         |    4 +++-
 entry.c                        |    1 +
 t/t2104-update-index-narrow.sh |    6 ++++++
 6 files changed, 20 insertions(+), 5 deletions(-)

Various fixes to make sure it works once in this mode.

Nguyễn Thái Ngọc Duy (5):
  unpack_trees(): add support for narrow checkout
  narrow spec: put '+' before a spec will change semantic of '*'
  ls-files: add --narrow-match=spec option for testing narrow matching
  clone: support narrow checkout with --path option
  checkout: add new options to support narrow checkout

 Documentation/git-checkout.txt   |   68 ++++++++++++++++++++++++-
 Documentation/git-clone.txt      |    8 +++-
 Documentation/git-ls-files.txt   |    7 ++-
 builtin-checkout.c               |   44 ++++++++++++++++
 builtin-clone.c                  |   13 +++++
 builtin-ls-files.c               |   14 +++++-
 cache.h                          |    3 +
 t/t2011-checkout-narrow.sh       |   80 +++++++++++++++++++++++++++++
 t/t3003-ls-files-narrow-match.sh |   45 ++++++++++++++++
 t/t5703-clone-narrow.sh          |   39 ++++++++++++++
 unpack-trees.c                   |  105 ++++++++++++++++++++++++++++++++++++++
 unpack-trees.h                   |    6 ++
 12 files changed, 427 insertions(+), 5 deletions(-)

Support for "git checkout" and "git clone" to enter/update/leave
narrow/sparse/partial checkout.

Nguyễn Thái Ngọc Duy (1):
  ls-files: add --overlay option

 Documentation/git-ls-files.txt |    4 ++++
 builtin-ls-files.c             |   16 +++++++++++++---
 t/t2104-update-index-narrow.sh |    4 ++++
 3 files changed, 21 insertions(+), 3 deletions(-)

Bonus stuff, not strictly needed.