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

[PATCH 00/20] More flexibility in making shallow clones

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Dec 29, 2015, 12:10 UTC
Message-ID
<1451391043-28093-1-git-send-email-pclouds@gmail.com>

This series brings three new options to shallow clone/fetch. --since lets you specify cut point by time. --not cuts by excluding specified refs. And --deepen=<N> extends shallow boundary in a more predictable way. Some of these were requested in the past.

An important point of this series is it starts to use rev-list behind the scene to define shallow boundary, which opens doors to even more ways of cutting a repository.

The series is good enough to look at but I don't think I have stared long enough to spot all the bugs. This mail is mostly about checking if the design (at both code and protocol levels) and the UI make sense. I'm thinking --since and --not may be too generic, but I don't see any better names, for example.

Refactor/cleanup patches are sprinkled throughout (bad?). The meat is in 05, 09, 12, 13, 16, 17, 18 and 20.

HTTP support is not in this series (and I don't intend to do soon). The amount of filler code just to pass some info from UI down to the protocol seems too much, and it's even more so when HTTP support is added. But I don't see anyway around it. Maybe we can share some code between git-clone, git-fetch and git-fetch-pack, at least the argument parsing..

Nguyễn Thái Ngọc Duy (20):
  upload-pack: move shallow deepen code out of receive_needs()
  upload-pack: move "shallow" sending code out of deepen()
  upload-pack: remove unused variable "backup"
  upload-pack: move "unshallow" sending code out of deepen()
  shallow.c: implement a generic shallow boundary finder based on rev-list
  upload-pack: glue code to use get_shallow_commits_by_rev_list
  upload-pack: use skip_prefix() instead of starts_with() when possible
  upload-pack: tighten number parsing at "deepen" lines
  upload-pack: add deepen-since to cut shallow repos based on time
  fetch-pack: use a common function for verbose printing
  fetch-pack: use a separate flag for fetch in deepening mode
  fetch: define shallow boundary with --since
  clone: define shallow clone boundary based on time with --since
  Add test_repo_expect_success for running tests in a new repository
  t5500: test for shallow depth since a specific date
  upload-pack: support define shallow boundary by excluding revisions
  fetch: define shallow boundary with --not
  clone: define shallow clone boundary with --not
  t5500: test for shallow depth excluding a ref
  fetch: add --deepen=<N> to extend shallow boundary by <N> commits
 Documentation/fetch-options.txt                   |  14 ++
 Documentation/git-clone.txt                       |   8 +
 Documentation/technical/pack-protocol.txt         |   4 +-
 Documentation/technical/protocol-capabilities.txt |  25 +++
 builtin/clone.c                                   |  32 +++-
 builtin/fetch.c                                   |  44 ++++-
 commit.h                                          |   2 +
 fetch-pack.c                                      | 128 ++++++++------
 fetch-pack.h                                      |   4 +
 shallow.c                                         |  92 ++++++++++
 t/README                                          |  15 ++
 t/t5500-fetch-pack.sh                             |  36 ++++
 t/t5510-fetch.sh                                  |  12 ++
 t/test-lib-functions.sh                           |  20 +++
 transport.c                                       |  11 ++
 transport.h                                       |  14 ++
 upload-pack.c                                     | 206 ++++++++++++++++------
 17 files changed, 550 insertions(+), 117 deletions(-)
-- 
2.3.0.rc1.137.g477eb31
Next: Nguyễn Thái Ngọc Duy
Message 1 of 24 in “More flexibility in making shallow clones”
  1. 00/20 More flexibility in making shallow clonesNguyễn Thái Ngọc Duy, Dec 29, 2015
  2. 01/20 upload-pack: move shallow deepen code out of receive_needs()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  3. 02/20 upload-pack: move "shallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  4. 03/20 upload-pack: remove unused variable "backup"Nguyễn Thái Ngọc Duy, Dec 29, 2015
  5. 04/20 upload-pack: move "unshallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  6. 05/20 shallow.c: implement a generic shallow boundary finder based on rev-listNguyễn Thái Ngọc Duy, Dec 29, 2015
  7. 06/20 upload-pack: glue code to use get_shallow_commits_by_rev_listNguyễn Thái Ngọc Duy, Dec 29, 2015
  8. 07/20 upload-pack: use skip_prefix() instead of starts_with() when possibleNguyễn Thái Ngọc Duy, Dec 29, 2015
  9. 08/20 upload-pack: tighten number parsing at "deepen" linesNguyễn Thái Ngọc Duy, Dec 29, 2015
  10. 09/20 upload-pack: add deepen-since to cut shallow repos based on timeNguyễn Thái Ngọc Duy, Dec 29, 2015
  11. 10/20 fetch-pack: use a common function for verbose printingNguyễn Thái Ngọc Duy, Dec 29, 2015
  12. 11/20 fetch-pack: use a separate flag for fetch in deepening modeNguyễn Thái Ngọc Duy, Dec 29, 2015
  13. 12/20 fetch: define shallow boundary with --sinceNguyễn Thái Ngọc Duy, Dec 29, 2015
  14. 13/20 clone: define shallow clone boundary based on time with --sinceNguyễn Thái Ngọc Duy, Dec 29, 2015
  15. 14/20 Add test_repo_expect_success for running tests in a new repositoryNguyễn Thái Ngọc Duy, Dec 29, 2015
  16. Duy NguyenDec 29, 2015
  17. 15/20 t5500: test for shallow depth since a specific dateNguyễn Thái Ngọc Duy, Dec 29, 2015
  18. 16/20 upload-pack: support define shallow boundary by excluding revisionsNguyễn Thái Ngọc Duy, Dec 29, 2015
  19. 17/20 fetch: define shallow boundary with --notNguyễn Thái Ngọc Duy, Dec 29, 2015
  20. 18/20 clone: define shallow clone boundary with --notNguyễn Thái Ngọc Duy, Dec 29, 2015
  21. 19/20 t5500: test for shallow depth excluding a refNguyễn Thái Ngọc Duy, Dec 29, 2015
  22. 20/20 fetch: add --deepen=<N> to extend shallow boundary by <N> commitsNguyễn Thái Ngọc Duy, Dec 29, 2015
  23. Eric SunshineJan 4, 2016
  24. Junio C HamanoDec 29, 2015

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.