git-commit-vandalism/Documentation/technical
Nguyễn Thái Ngọc Duy ad491366de make the sender advertise shallow commits to the receiver
If either receive-pack or upload-pack is called on a shallow
repository, shallow commits (*) will be sent after the ref
advertisement (but before the packet flush), so that the receiver has
the full "shape" of the sender's commit graph. This will be needed for
the receiver to update its .git/shallow if necessary.

This breaks the protocol for all clients trying to push to a shallow
repo, or fetch from one. Which is basically the same end result as
today's "is_repository_shallow() && die()" in receive-pack and
upload-pack. New clients will be made aware of shallow upstream and
can make use of this information.

The sender must send all shallow commits that are sent in the
following pack. It may send more shallow commits than necessary.

upload-pack for example may choose to advertise no shallow commits if
it knows in advance that the pack it's going to send contains no
shallow commits. But upload-pack is the server, so we choose the
cheaper way, send full .git/shallow and let the client deal with it.

Smart HTTP is not affected by this patch. Shallow support on
smart-http comes later separately.

(*) A shallow commit is a commit that terminates the revision
    walker. It is usually put in .git/shallow in order to keep the
    revision walker from going out of bound because there is no
    guarantee that objects behind this commit is available.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-12-10 16:14:16 -08:00
..
.gitignore
api-allocation-growing.txt api-allocation-growing.txt: encourage better variable naming 2013-01-06 12:57:56 -08:00
api-argv-array.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-builtin.txt Merge branch 'ph/builtin-srcs-are-in-subdir-these-days' 2013-06-26 15:07:48 -07:00
api-config.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-credentials.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-decorate.txt
api-diff.txt diff_opt: track whether flags have been set explicitly 2013-05-10 10:24:17 -07:00
api-directory-listing.txt dir.c: git-status --ignored: don't scan the work tree twice 2013-04-15 12:36:42 -07:00
api-gitattributes.txt Rename git_checkattr() to git_check_attr() 2011-08-04 15:53:21 -07:00
api-grep.txt
api-hash.txt technical-docs: document hash API 2009-12-17 21:54:50 -08:00
api-history-graph.txt graph.c: infinite loop in git whatchanged --graph -m 2012-09-25 11:07:15 -07:00
api-in-core-index.txt
api-index-skel.txt Documentation: avoid poor-man's small caps GIT 2013-02-01 13:53:25 -08:00
api-index.sh
api-lockfile.txt
api-merge.txt docs: fix cross-directory linkgit references 2012-06-08 08:31:52 -07:00
api-object-access.txt
api-parse-options.txt Merge branch 'ph/builtin-srcs-are-in-subdir-these-days' 2013-06-26 15:07:48 -07:00
api-quote.txt
api-ref-iteration.txt doc: various spelling fixes 2013-04-12 12:00:52 -07:00
api-remote.txt Documentation: the name of the system is 'Git', not 'git' 2013-02-01 13:53:33 -08:00
api-revision-walking.txt many small typofixes 2013-07-29 12:32:25 -07:00
api-run-command.txt run-command: encode signal death as a positive integer 2013-01-06 11:09:18 -08:00
api-setup.txt guard against new pathspec magic in pathspec matching code 2013-07-15 10:56:07 -07:00
api-sha1-array.txt The name of the hash function is "SHA-1", not "SHA1" 2013-04-15 11:08:37 -07:00
api-sigchain.txt Fix typos in the documentation 2011-01-04 11:23:42 -08:00
api-strbuf.txt strbuf: create strbuf_humanise_bytes() to show byte sizes 2013-04-10 12:58:33 -07:00
api-string-list.txt Merge branch 'mh/ceiling' into maint 2013-01-28 11:07:18 -08:00
api-tree-walking.txt unpack_trees: group error messages by type 2010-08-11 10:36:06 -07:00
api-xdiff-interface.txt
http-protocol.txt Documentation: make AsciiDoc links always point to HTML files 2013-09-06 14:49:06 -07:00
index-format.txt typofix: documentation 2013-07-22 16:06:48 -07:00
pack-format.txt The name of the hash function is "SHA-1", not "SHA1" 2013-04-15 11:08:37 -07:00
pack-heuristics.txt Merge branch 'mn/doc-pack-heu-remove-dead-pastebin' 2013-09-12 14:41:47 -07:00
pack-protocol.txt make the sender advertise shallow commits to the receiver 2013-12-10 16:14:16 -08:00
protocol-capabilities.txt document 'allow-tip-sha1-in-want' capability 2013-07-26 08:33:38 -07:00
protocol-common.txt docs: stop using asciidoc no-inline-literal 2012-04-26 13:19:06 -07:00
racy-git.txt typofix: documentation 2013-07-22 16:06:48 -07:00
send-pack-pipeline.txt Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt 2012-10-16 16:09:09 -07:00
shallow.txt The name of the hash function is "SHA-1", not "SHA1" 2013-04-15 11:08:37 -07:00
trivial-merge.txt Documentation/technical: convert plain text files to asciidoc 2012-10-16 16:09:09 -07:00