git-commit-vandalism/builtin
Lars Schneider 2841e8f81c convert: add "status=delayed" to filter process protocol
Some `clean` / `smudge` filters may require a significant amount of
time to process a single blob (e.g. the Git LFS smudge filter might
perform network requests). During this process the Git checkout
operation is blocked and Git needs to wait until the filter is done to
continue with the checkout.

Teach the filter process protocol, introduced in edcc8581 ("convert: add
filter.<driver>.process option", 2016-10-16), to accept the status
"delayed" as response to a filter request. Upon this response Git
continues with the checkout operation. After the checkout operation Git
calls "finish_delayed_checkout" which queries the filter for remaining
blobs. If the filter is still working on the completion, then the filter
is expected to block. If the filter has completed all remaining blobs
then an empty response is expected.

Git has a multiple code paths that checkout a blob. Support delayed
checkouts only in `clone` (in unpack-trees.c) and `checkout` operations
for now. The optimization is most effective in these code paths as all
files of the tree are processed.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-06-30 13:50:41 -07:00
..
add.c Merge branch 'bw/pathspec-sans-the-index' 2017-05-30 11:16:40 +09:00
am.c Merge branch 'ja/do-not-ask-needless-questions' 2017-05-29 12:34:48 +09:00
annotate.c
apply.c Convert read_mmblob to take struct object_id. 2016-09-07 12:59:42 -07:00
archive.c archive: read local configuration 2016-11-22 13:55:20 -08:00
bisect--helper.c
blame.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
branch.c Convert lookup_commit* to struct object_id 2017-05-08 15:12:57 +09:00
bundle.c bundle: use prefix_filename with bundle path 2017-03-21 11:18:41 -07:00
cat-file.c cat-file: fix memory leak 2017-05-08 12:18:19 +09:00
check-attr.c attr: tighten const correctness with git_attr and match_attr 2017-02-01 13:46:53 -08:00
check-ignore.c Merge branch 'bw/pathspec-sans-the-index' 2017-05-30 11:16:40 +09:00
check-mailmap.c strbuf: introduce strbuf_getline_{lf,nul}() 2016-01-15 10:12:51 -08:00
check-ref-format.c use xmallocz to avoid size arithmetic 2016-02-22 14:51:09 -08:00
checkout-index.c hold_locked_index(): align error handling with hold_lockfile_for_update() 2016-12-07 11:31:59 -08:00
checkout.c convert: add "status=delayed" to filter process protocol 2017-06-30 13:50:41 -07:00
clean.c dir: convert fill_directory to take an index 2017-05-06 19:15:39 +09:00
clone.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
column.c column: read lines with strbuf_getline() 2016-01-15 10:35:07 -08:00
commit-tree.c Convert lookup_commit* to struct object_id 2017-05-08 15:12:57 +09:00
commit.c Merge branch 'bm/interpret-trailers-cut-line-is-eom' 2017-05-29 12:34:53 +09:00
config.c config: complain about --local outside of a git repo 2017-05-15 11:30:51 +09:00
count-objects.c Convert object iteration callbacks to struct object_id 2017-02-22 10:12:15 -08:00
credential.c
describe.c Convert lookup_tag to struct object_id 2017-05-08 15:12:57 +09:00
diff-files.c diff: run arguments through precompose_argv 2016-05-13 14:35:49 -07:00
diff-index.c diff: run arguments through precompose_argv 2016-05-13 14:35:49 -07:00
diff-tree.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
diff.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
difftool.c difftool: address a couple of resource/memory leaks 2017-05-08 12:18:19 +09:00
fast-export.c Merge branch 'js/plug-leaks' 2017-05-29 12:34:44 +09:00
fetch-pack.c Rename sha1_array to oid_array 2017-03-31 08:33:56 -07:00
fetch.c Convert lookup_commit* to struct object_id 2017-05-08 15:12:57 +09:00
fmt-merge-msg.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
for-each-ref.c ref-filter: add --no-contains option to tag/branch/for-each-ref 2017-03-24 12:15:26 -07:00
fsck.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
gc.c Merge branch 'js/larger-timestamps' 2017-05-16 11:51:59 +09:00
get-tar-commit-id.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
grep.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
hash-object.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
help.c Merge branch 'js/no-html-bypass-on-windows' into maint 2016-09-08 21:35:55 -07:00
index-pack.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
init-db.c real_pathdup(): fix callsites that wanted it to die on error 2017-03-08 14:38:41 -08:00
interpret-trailers.c Merge branch 'jk/parseopt-string-list' into jk/string-list-static-init 2016-06-13 10:37:48 -07:00
log.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
ls-files.c Merge branch 'bw/pathspec-sans-the-index' 2017-05-30 11:16:40 +09:00
ls-remote.c avoid using fixed PATH_MAX buffers for refs 2017-03-30 14:59:50 -07:00
ls-tree.c tree: convert parse_tree_indirect to struct object_id 2017-05-08 15:12:58 +09:00
mailinfo.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
mailsplit.c mailinfo & mailsplit: check for EOF while parsing 2017-05-08 12:18:19 +09:00
merge-base.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
merge-file.c prefix_filename: return newly allocated string 2017-03-21 11:18:41 -07:00
merge-index.c Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ 2017-03-26 22:08:21 -07:00
merge-ours.c
merge-recursive.c i18n: merge-recursive: mark verbose message for translation 2016-09-15 13:17:32 -07:00
merge-tree.c Convert lookup_blob to struct object_id 2017-05-08 15:12:57 +09:00
merge.c tree: convert parse_tree_indirect to struct object_id 2017-05-08 15:12:58 +09:00
mktag.c usage: do not insist that standard input must come from a file 2015-10-16 15:27:52 -07:00
mktree.c mktree: plug memory leaks reported by Coverity 2017-05-08 12:18:19 +09:00
mv.c Merge branch 'bw/pathspec-cleanup' 2017-01-18 15:12:15 -08:00
name-rev.c Merge branch 'js/larger-timestamps' 2017-05-30 11:16:45 +09:00
notes.c Convert lookup_commit* to struct object_id 2017-05-08 15:12:57 +09:00
pack-objects.c Merge branch 'jk/disable-pack-reuse-when-broken' 2017-05-29 12:34:44 +09:00
pack-redundant.c pack-redundant: plug memory leak 2017-05-08 12:18:19 +09:00
pack-refs.c refs: delete pack_refs() in favor of refs_pack_refs() 2017-04-14 03:53:25 -07:00
patch-id.c Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ 2017-03-26 22:08:21 -07:00
prune-packed.c Convert object iteration callbacks to struct object_id 2017-02-22 10:12:15 -08:00
prune.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
pull.c merge: convert checkout_fast_forward to struct object_id 2017-05-08 15:12:58 +09:00
push.c push: unmark a local variable as static 2017-04-02 09:49:24 -07:00
read-tree.c Merge branch 'ja/do-not-ask-needless-questions' 2017-05-29 12:34:48 +09:00
rebase--helper.c rebase--helper: add a builtin helper for interactive rebases 2017-02-09 14:55:26 -08:00
receive-pack.c Merge branch 'js/plug-leaks' 2017-05-29 12:34:44 +09:00
reflog.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
remote-ext.c pkt-line: rename packet_write() to packet_write_fmt() 2016-10-17 11:36:50 -07:00
remote-fd.c
remote.c Merge branch 'rl/remote-allow-missing-branch-name-merge' into maint 2017-03-21 15:03:28 -07:00
repack.c repack: accept --threads=<n> and pass it down to pack-objects 2017-04-27 08:09:25 +09:00
replace.c Convert lookup_tag to struct object_id 2017-05-08 15:12:57 +09:00
rerere.c Sync with 2.6.1 2015-10-05 13:20:08 -07:00
reset.c Merge branch 'bw/pathspec-sans-the-index' 2017-05-30 11:16:40 +09:00
rev-list.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
rev-parse.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
revert.c Merge branch 'jk/cherry-pick-0-mainline' 2017-03-17 13:50:28 -07:00
rm.c pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP 2017-05-12 14:23:46 +09:00
send-pack.c Merge branch 'bc/object-id' 2017-04-19 21:37:13 -07:00
shortlog.c Merge branch 'rs/shortlog-cleanup' 2017-03-24 13:07:37 -07:00
show-branch.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
show-ref.c show-ref: remove a stale comment 2017-01-23 18:51:56 -08:00
stripspace.c stripspace: respect repository config 2016-11-21 11:00:38 -08:00
submodule--helper.c pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP 2017-05-12 14:23:46 +09:00
symbolic-ref.c delete_ref: accept a reflog message argument 2017-02-20 22:04:47 -08:00
tag.c Merge branch 'bc/object-id' 2017-05-29 12:34:43 +09:00
unpack-file.c convert trivial sprintf / strcpy calls to xsnprintf 2015-09-25 10:18:18 -07:00
unpack-objects.c object: convert parse_object* to take struct object_id 2017-05-08 15:12:58 +09:00
update-index.c Merge branch 'cc/untracked' 2017-04-11 00:21:51 -07:00
update-ref.c update-ref: pass reflog message to delete_ref() 2017-02-20 22:04:47 -08:00
update-server-info.c
upload-archive.c archive: read local configuration 2016-11-22 13:55:20 -08:00
var.c
verify-commit.c Convert lookup_commit* to struct object_id 2017-05-08 15:12:57 +09:00
verify-pack.c
verify-tag.c builtin/verify-tag: add --format to verify-tag 2017-01-17 16:10:22 -08:00
worktree.c Merge branch 'js/plug-leaks' 2017-05-29 12:34:44 +09:00
write-tree.c