git-commit-vandalism/builtin
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
..
add.c Merge branch 'fc/trivial' 2013-09-17 11:42:34 -07:00
annotate.c
apply.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
archive.c pkt-line: provide a LARGE_PACKET_MAX static buffer 2013-02-20 13:42:22 -08:00
bisect--helper.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
blame.c pathspec: stop --*-pathspecs impact on internal parse_pathspec() uses 2013-10-28 09:57:36 -07:00
branch.c Merge branch 'jx/branch-vv-always-compare-with-upstream' 2013-11-18 12:24:49 -08:00
bundle.c
cat-file.c Merge branch 'mg/more-textconv' 2013-10-23 13:21:31 -07:00
check-attr.c Merge branch 'sb/parseopt-boolean-removal' 2013-09-04 12:39:03 -07:00
check-ignore.c Merge branch 'dw/check-ignore-sans-index' 2013-09-20 12:37:32 -07:00
check-mailmap.c builtin: add git-check-mailmap command 2013-07-13 10:19:37 -07:00
check-ref-format.c
checkout-index.c Merge branch 'nd/lift-path-max' 2013-10-30 12:10:56 -07:00
checkout.c Merge branch 'mm/checkout-auto-track-fix' 2013-10-30 12:10:16 -07:00
clean.c Merge branch 'jl/submodule-mv' 2013-09-09 14:36:15 -07:00
clone.c clone: prevent --reference to a shallow repository 2013-12-10 16:14:16 -08:00
column.c i18n: column: mark parseopt strings for translation 2012-08-20 12:23:16 -07:00
commit-tree.c commit-tree: document -S option consistently 2013-03-25 15:01:22 -07:00
commit.c Merge branch 'mm/commit-template-squelch-advice-messages' 2013-09-20 12:36:32 -07:00
config.c Merge branch 'jk/config-int-range-check' 2013-09-12 14:41:00 -07:00
count-objects.c count-objects: add -H option to humanize sizes 2013-04-10 13:27:26 -07:00
credential.c
describe.c describe: trivial style fixes 2013-10-31 13:47:35 -07:00
diff-files.c convert read_cache_preload() to take struct pathspec 2013-07-15 10:56:08 -07:00
diff-index.c convert read_cache_preload() to take struct pathspec 2013-07-15 10:56:08 -07:00
diff-tree.c
diff.c diff: trivial style fix 2013-10-31 13:48:09 -07:00
fast-export.c Merge branch 'fc/fast-export' 2013-09-17 11:42:31 -07:00
fetch-pack.c Merge branch 'jc/push-cas' 2013-09-09 14:30:29 -07:00
fetch.c Merge branch 'bk/refs-multi-update' 2013-09-20 12:36:12 -07:00
fmt-merge-msg.c Merge branch 'rt/commentchar-fmt-merge-msg' into maint 2013-04-26 11:10:47 -07:00
for-each-ref.c Merge branch 'jk/for-each-ref-skip-parsing' 2013-11-01 07:38:41 -07:00
fsck.c Merge branch 'jk/free-tree-buffer' 2013-09-17 11:37:33 -07:00
gc.c Merge branch 'nd/gc-lock-against-each-other' 2013-10-30 12:10:27 -07:00
grep.c Merge branch 'mg/more-textconv' 2013-10-23 13:21:31 -07:00
hash-object.c hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP 2013-08-07 08:30:55 -07:00
help.c Merge branch 'ph/builtin-srcs-are-in-subdir-these-days' into maint 2013-07-21 22:51:29 -07:00
index-pack.c Merge branch 'jk/free-tree-buffer' 2013-09-17 11:37:33 -07:00
init-db.c i18n: init-db: mark parseopt strings for translation 2012-08-20 12:23:17 -07:00
log.c Merge branch 'mg/more-textconv' 2013-10-23 13:21:31 -07:00
ls-files.c Merge branch 'jc/ls-files-killed-optim' 2013-09-11 15:03:28 -07:00
ls-remote.c ls-remote: document the '--get-url' option 2012-09-07 10:58:35 -07:00
ls-tree.c Merge branch 'jl/submodule-mv' 2013-09-09 14:36:15 -07:00
mailinfo.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
mailsplit.c mailsplit: sort maildir filenames more cleverly 2013-03-02 22:52:44 -08:00
merge-base.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
merge-file.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
merge-index.c Convert "struct cache_entry *" to "const ..." wherever possible 2013-07-09 09:12:48 -07:00
merge-ours.c
merge-recursive.c
merge-tree.c merge-tree: handle directory/empty conflict correctly 2013-05-06 22:17:00 -07:00
merge.c merge: simplify ff-only option 2013-10-31 11:12:24 -07:00
mktag.c
mktree.c i18n: mktree: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
mv.c mv: Fix spurious warning when moving a file in presence of submodules 2013-10-13 22:35:19 -07:00
name-rev.c branch, commit, name-rev: ease up boolean conditions 2013-08-07 08:30:30 -07:00
notes.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
pack-objects.c Merge branch 'jc/pack-objects' 2013-10-23 13:21:26 -07:00
pack-redundant.c Fix sizeof usage in get_permutations 2012-12-13 11:13:44 -08:00
pack-refs.c pack-refs: merge code from pack-refs.{c,h} into refs.{c,h} 2013-05-01 15:33:11 -07:00
patch-id.c
prune-packed.c prune-packed: avoid implying "1" is DRY_RUN in prune_packed_objects() 2013-05-28 09:20:54 -07:00
prune.c Merge branch 'nd/prune-packed-dryrun-verbose' 2013-06-06 12:17:52 -07:00
push.c Merge branch 'nd/push-no-thin' 2013-09-11 14:56:59 -07:00
read-tree.c C: have space around && and || operators 2013-10-16 10:26:39 -07:00
receive-pack.c make the sender advertise shallow commits to the receiver 2013-12-10 16:14:16 -08:00
reflog.c Merge branch 'bk/refs-multi-update' 2013-09-20 12:36:12 -07:00
remote-ext.c
remote-fd.c
remote.c Merge branch 'po/remote-set-head-usage' 2013-10-14 11:07:29 -07:00
repack.c repack: improve warnings about failure of renaming and removing files 2013-09-17 13:34:57 -07:00
replace.c Merge branch 'cc/replace-with-the-same-type' 2013-09-24 23:35:24 -07:00
rerere.c rerere: convert to use parse_pathspec 2013-07-15 10:56:07 -07:00
reset.c reset: pass real rev name to add--interactive 2013-10-25 14:54:18 -07:00
rev-list.c C: have space around && and || operators 2013-10-16 10:26:39 -07:00
rev-parse.c Merge branch 'sb/parseopt-boolean-removal' 2013-09-04 12:39:03 -07:00
revert.c Merge branch 'hu/cherry-pick-previous-branch' 2013-10-23 13:21:35 -07:00
rm.c rm: re-use parse_pathspec's trailing-slash removal 2013-09-13 12:37:35 -07:00
send-pack.c send-pack: forbid pushing from a shallow repository 2013-12-10 16:14:16 -08:00
shortlog.c Merge branch 'jk/shortlog-tolerate-broken-commit' 2013-09-24 23:29:00 -07:00
show-branch.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
show-ref.c Replace deprecated OPT_BOOLEAN by OPT_BOOL 2013-08-05 11:32:19 -07:00
stripspace.c builtin/stripspace.c: fix broken indentation 2013-09-06 13:33:17 -07:00
symbolic-ref.c C: have space around && and || operators 2013-10-16 10:26:39 -07:00
tag.c Merge branch 'bk/refs-multi-update' 2013-09-20 12:36:12 -07:00
tar-tree.c tar-tree: remove dependency on sq_quote_print() 2013-07-30 08:10:35 -07:00
unpack-file.c
unpack-objects.c
update-index.c Merge branch 'jl/submodule-mv' 2013-09-09 14:36:15 -07:00
update-ref.c Merge branch 'bk/refs-multi-update' 2013-09-20 12:36:12 -07:00
update-server-info.c i18n: update-server-info: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00
upload-archive.c pkt-line: provide a LARGE_PACKET_MAX static buffer 2013-02-20 13:42:22 -08:00
var.c
verify-pack.c i18n: verify-pack: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00
verify-tag.c gpg_interface: allow to request status return 2013-02-14 09:30:04 -08:00
write-tree.c i18n: write-tree: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00