git/Documentation/technical
Nguyễn Thái Ngọc Duy cccf74e2da fetch, upload-pack: --deepen=N extends shallow boundary by N commits
In git-fetch, --depth argument is always relative with the latest
remote refs. This makes it a bit difficult to cover this use case,
where the user wants to make the shallow history, say 3 levels
deeper. It would work if remote refs have not moved yet, but nobody
can guarantee that, especially when that use case is performed a
couple months after the last clone or "git fetch --depth". Also,
modifying shallow boundary using --depth does not work well with
clones created by --since or --not.

This patch fixes that. A new argument --deepen=<N> will add <N> more (*)
parent commits to the current history regardless of where remote refs
are.

Have/Want negotiation is still respected. So if remote refs move, the
server will send two chunks: one between "have" and "want" and another
to extend shallow history. In theory, the client could send no "want"s
in order to get the second chunk only. But the protocol does not allow
that. Either you send no want lines, which means ls-remote; or you
have to send at least one want line that carries deep-relative to the
server..

The main work was done by Dongcan Jiang. I fixed it up here and there.
And of course all the bugs belong to me.

(*) We could even support --deepen=<N> where <N> is negative. In that
case we can cut some history from the shallow clone. This operation
(and --depth=<shorter depth>) does not require interaction with remote
side (and more complicated to implement as a result).

Helped-by: Duy Nguyen <pclouds@gmail.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Dongcan Jiang <dongcan.jiang@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-06-13 14:38:16 -07:00
..
.gitignore
api-allocation-growing.txt add macro REALLOC_ARRAY 2014-09-18 09:13:38 -07:00
api-argv-array.txt argv-array: implement argv_array_pushv() 2015-06-15 12:40:49 -07:00
api-builtin.txt
api-config.txt Merge branch 'ta/config-set-1' 2014-09-11 10:33:25 -07:00
api-credentials.txt credential: let helpers tell us to quit 2014-12-04 10:11:12 -08:00
api-decorate.txt
api-diff.txt
api-directory-listing.txt
api-error-handling.txt api-error-handling doc: typofix 2015-03-28 09:24:55 -07:00
api-gitattributes.txt
api-grep.txt
api-hashmap.txt
api-history-graph.txt
api-in-core-index.txt
api-index-skel.txt
api-index.sh
api-merge.txt
api-object-access.txt
api-parse-options.txt Merge branch 'pt/pull-builtin' 2015-08-03 11:01:17 -07:00
api-quote.txt
api-ref-iteration.txt each_ref_fn: change to take an object_id parameter 2015-05-25 12:19:27 -07:00
api-remote.txt http: allow selection of proxy authentication method 2016-01-26 10:53:09 -08:00
api-revision-walking.txt
api-run-command.txt run-command: factor out child_process_clear() 2015-11-02 15:01:00 -08:00
api-setup.txt
api-sha1-array.txt
api-sigchain.txt
api-string-list.txt sort_string_list(): rename to string_list_sort() 2014-11-25 10:11:34 -08:00
api-submodule-config.txt submodule: use new config API for worktree configurations 2015-08-19 11:43:10 -07:00
api-trace.txt
api-tree-walking.txt
api-xdiff-interface.txt
bitmap-format.txt
http-protocol.txt upload-pack: optionally allow fetching reachable sha1 2015-05-22 18:25:36 -07:00
index-format.txt Merge branch 'jc/em-dash-in-doc' 2015-10-29 13:59:16 -07:00
pack-format.txt
pack-heuristics.txt
pack-protocol.txt upload-pack: support define shallow boundary by excluding revisions 2016-06-13 14:38:16 -07:00
protocol-capabilities.txt fetch, upload-pack: --deepen=N extends shallow boundary by N commits 2016-06-13 14:38:16 -07:00
protocol-common.txt pack-protocol: clarify LF-handling in PKT-LINE() 2015-09-03 15:18:12 -07:00
racy-git.txt Makefile / racy-git.txt: clarify USE_NSEC prerequisites 2015-07-01 14:54:42 -07:00
repository-version.txt introduce "preciousObjects" repository extension 2015-06-24 17:09:35 -07:00
send-pack-pipeline.txt
shallow.txt
trivial-merge.txt