git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC PATCH 00/12] Sparse checkout

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Jul 23, 2008, 14:55 UTC
Message-ID
<20080723145518.GA29035@laptop>

I have not looked at non-builtin commands yet, but I think it's not a big deal. We have several rounds before this series is good enough ;) So in short, sparse prefix will be stored in config, core.sparsecheckout. you have three new commands to enter/update/leave sparse checkout:

git clone --path=prefix # clone with sparse checkout git checkout --path=prefix # limit/update checkout paths git checkout --full # stop sparse checkout

Other operations should be normal. User attempts to do anything outside sparse checkout will get flagged. Git itself should not touch anything outside sparse checkout.

One more thing. As files outside sparse checkout will not be checking out, .gitignore and .gitattributes from parent directories (outside sparse checkout) will be gone too. This may lead to surprise.

Comments are welcome.
Nguyễn Thái Ngọc Duy (12):
  git-grep: read config
  git-grep: support --no-external-grep
  Introduce sparse prefix
  Protect index with sparse prefix
  tests for sparse checkout, index protection
  Avoid accessing working directory outside sparse prefix
  tests for sparse checkout, worktree protection
  git-clone: support --path to do sparse clone
  tests for sparse clone
  git-checkout: support --full and --path to manipulate sparse checkout
  tests for checkout [--full|--path]
  git-status: print sparse checkout status
 builtin-add.c                              |    4 +-
 builtin-apply.c                            |    5 +
 builtin-checkout-index.c                   |    2 +
 builtin-checkout.c                         |   46 ++++++-
 builtin-clean.c                            |    3 +
 builtin-clone.c                            |   13 ++
 builtin-commit.c                           |   13 ++-
 builtin-grep.c                             |   36 +++--
 builtin-ls-files.c                         |    6 +-
 builtin-ls-tree.c                          |    2 +-
 builtin-merge-recursive.c                  |    6 +-
 builtin-mv.c                               |    2 +-
 builtin-read-tree.c                        |    5 +
 builtin-rev-parse.c                        |    4 +
 builtin-rm.c                               |    7 +-
 builtin-update-index.c                     |   37 ++++-
 cache.h                                    |   19 +++
 config.c                                   |    7 +
 diff-lib.c                                 |    5 +-
 diff.c                                     |    3 +-
 entry.c                                    |    3 +
 environment.c                              |  221 ++++++++++++++++++++++++++
 read-cache.c                               |  112 +++++++++++++-
 setup.c                                    |   90 +++++++++++-
 sha1_file.c                                |    3 +
 t/t2010-checkout-sparse.sh                 |   71 +++++++++
 t/t2300-sparse-index.sh                    |  156 +++++++++++++++++++
 t/t2300/diff-index-sub.expected            |    3 +
 t/t2300/log.expected                       |   64 ++++++++
 t/t2301-sparse-index-merge-recursive.sh    |  226 +++++++++++++++++++++++++++
 t/t2302-sparse-worktree.sh                 |  113 ++++++++++++++
 t/t2302/add-u.expected                     |    1 +
 t/t2302/add.expected                       |    2 +
 t/t2302/commit.expected                    |   14 ++
 t/t2302/diff-1.expected                    |    7 +
 t/t2302/diff-cc.expected                   |    9 +
 t/t2302/grep-work.expected                 |    2 +
 t/t2302/grep.expected                      |    2 +
 t/t2302/ls-files.expected                  |    2 +
 t/t2303-sparse-worktree-apply.sh           |   62 ++++++++
 t/t2303/apply-initial.patch                |   14 ++
 t/t2303/apply-inside.patch                 |    7 +
 t/t2303/apply-leading-dirs.patch           |    3 +
 t/t2303/apply-outside.patch                |    7 +
 t/t2303/apply-remove.patch                 |    7 +
 t/t2303/apply-rename.expected              |   13 ++
 t/t2303/apply-rename.patch                 |    4 +
 t/t2304-sparse-worktree-merge-recursive.sh |  233 ++++++++++++++++++++++++++++
 t/t5703-clone-sparse.sh                    |   40 +++++
 unpack-trees.c                             |  152 +++++++++++++++++--
 unpack-trees.h                             |    4 +-
 wt-status.c                                |   12 +-
 52 files changed, 1831 insertions(+), 53 deletions(-)
 create mode 100755 t/t2010-checkout-sparse.sh
 create mode 100755 t/t2300-sparse-index.sh
 create mode 100644 t/t2300/diff-index-sub.expected
 create mode 100644 t/t2300/log.expected
 create mode 100755 t/t2301-sparse-index-merge-recursive.sh
 create mode 100755 t/t2302-sparse-worktree.sh
 create mode 100644 t/t2302/add-u.expected
 create mode 100644 t/t2302/add.expected
 create mode 100644 t/t2302/commit.expected
 create mode 100644 t/t2302/diff-1.expected
 create mode 100644 t/t2302/diff-cc.expected
 create mode 100644 t/t2302/grep-work.expected
 create mode 100644 t/t2302/grep.expected
 create mode 100644 t/t2302/ls-files.expected
 create mode 100755 t/t2303-sparse-worktree-apply.sh
 create mode 100644 t/t2303/apply-initial.patch
 create mode 100644 t/t2303/apply-inside.patch
 create mode 100644 t/t2303/apply-leading-dirs.patch
 create mode 100644 t/t2303/apply-outside.patch
 create mode 100644 t/t2303/apply-remove.patch
 create mode 100644 t/t2303/apply-rename.expected
 create mode 100644 t/t2303/apply-rename.patch
 create mode 100755 t/t2304-sparse-worktree-merge-recursive.sh
 create mode 100755 t/t5703-clone-sparse.sh
Next: Nguyen Thai Ngoc Duy
Message 1 of 27 in “Sparse checkout”
  1. 00/12 Sparse checkoutNguyễn Thái Ngọc Duy, Jul 23, 2008
  2. Nguyen Thai Ngoc DuyJul 23, 2008
  3. Johannes SchindelinJul 23, 2008
  4. Nguyen Thai Ngoc DuyJul 23, 2008
  5. Johannes SchindelinJul 23, 2008
  6. Nguyen Thai Ngoc DuyJul 24, 2008
  7. Johannes SchindelinJul 24, 2008
  8. Nguyen Thai Ngoc DuyJul 24, 2008
  9. Johannes SchindelinJul 24, 2008
  10. Nguyen Thai Ngoc DuyJul 24, 2008
  11. Avery PennarunJul 24, 2008
  12. Johannes SchindelinJul 24, 2008
  13. Nguyen Thai Ngoc DuyJul 24, 2008
  14. Jan HudecAug 3, 2008
  15. Johannes SchindelinAug 3, 2008
  16. Nguyen Thai Ngoc DuyAug 4, 2008
  17. James PickensJul 24, 2008
  18. Nguyen Thai Ngoc DuyJul 24, 2008
  19. James PickensJul 24, 2008
  20. Nguyen Thai Ngoc DuyJul 24, 2008
  21. James PickensJul 24, 2008
  22. Jakub NarebskiJul 24, 2008
  23. Nguyen Thai Ngoc DuyJul 24, 2008
  24. Jakub NarebskiJul 24, 2008
  25. Nguyen Thai Ngoc DuyJul 24, 2008
  26. Avery PennarunJul 25, 2008
  27. Johannes SchindelinJul 25, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.