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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html