diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-06-29 17:03:11 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-06-29 17:03:11 -0700 |
commit | 57e4d61686b20ef3ad4982753407cf0bd87335f2 (patch) | |
tree | 4a93746a700898c457f3d0be64d65cfa7dd6d086 | |
parent | a852aac48d881d538e24d5493e218a93b12b1709 (diff) | |
parent | b4194828dc00e97dcd07ecb4bb4f87650a6fca1d (diff) | |
download | git-57e4d61686b20ef3ad4982753407cf0bd87335f2.tar.gz |
Merge branch 'jc/diff-index-quick-exit-early'
* jc/diff-index-quick-exit-early:
diff-index --quiet: learn the "stop feeding the backend early" logic
Conflicts:
unpack-trees.h
-rw-r--r-- | diff-lib.c | 7 | ||||
-rw-r--r-- | unpack-trees.c | 4 | ||||
-rw-r--r-- | unpack-trees.h | 1 |
3 files changed, 10 insertions, 2 deletions
diff --git a/diff-lib.c b/diff-lib.c index 9c29293bbc..2e09500c82 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -433,8 +433,13 @@ static int oneway_diff(struct cache_entry **src, struct unpack_trees_options *o) if (tree == o->df_conflict_entry) tree = NULL; - if (ce_path_match(idx ? idx : tree, &revs->prune_data)) + if (ce_path_match(idx ? idx : tree, &revs->prune_data)) { do_oneway_diff(o, idx, tree); + if (diff_can_quit_early(&revs->diffopt)) { + o->exiting_early = 1; + return -1; + } + } return 0; } diff --git a/unpack-trees.c b/unpack-trees.c index 07f8364244..3a61d821ee 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -593,7 +593,7 @@ static int unpack_nondirectories(int n, unsigned long mask, static int unpack_failed(struct unpack_trees_options *o, const char *message) { discard_index(&o->result); - if (!o->gently) { + if (!o->gently && !o->exiting_early) { if (message) return error("%s", message); return -1; @@ -1133,6 +1133,8 @@ return_failed: display_error_msgs(o); mark_all_ce_unused(o->src_index); ret = unpack_failed(o, NULL); + if (o->exiting_early) + ret = 0; goto done; } diff --git a/unpack-trees.h b/unpack-trees.h index 64f02cb03a..7998948307 100644 --- a/unpack-trees.h +++ b/unpack-trees.h @@ -46,6 +46,7 @@ struct unpack_trees_options { debug_unpack, skip_sparse_checkout, gently, + exiting_early, show_all_errors, dry_run; const char *prefix; |