diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-29 12:31:06 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-29 15:08:31 -0700 |
commit | 40e372563cfbcce4380820ae03e872f09fa25327 (patch) | |
tree | ee2b3a45249377411570a420aa950327ff3bbd59 | |
parent | 2842c0f914f7c05401c449db9d01276ac5a743f0 (diff) | |
download | git-40e372563cfbcce4380820ae03e872f09fa25327.tar.gz |
unpack-trees: allow pruning with pathspec
Use the pathspec pruning of traverse_trees() from unpack_trees(). Again,
the unpack_trees() machinery is primarily meant for merging two (or more)
trees, and because a merge is a full tree operation, it didn't support any
pruning with pathspec, and this codepath probably should not be enabled
while running a merge, but the caller in diff-lib.c::diff_cache() should
be able to take advantage of it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | unpack-trees.c | 2 | ||||
-rw-r--r-- | unpack-trees.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 07f8364244..d5ec463e0e 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -444,6 +444,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, newinfo = *info; newinfo.prev = info; + newinfo.pathspec = info->pathspec; newinfo.name = *p; newinfo.pathlen += tree_entry_len(p->path, p->sha1) + 1; newinfo.conflicts |= df_conflicts; @@ -1040,6 +1041,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options info.fn = unpack_callback; info.data = o; info.show_all_errors = o->show_all_errors; + info.pathspec = o->pathspec; if (o->prefix) { /* diff --git a/unpack-trees.h b/unpack-trees.h index 64f02cb03a..b7fed7e6ec 100644 --- a/unpack-trees.h +++ b/unpack-trees.h @@ -51,6 +51,7 @@ struct unpack_trees_options { const char *prefix; int cache_bottom; struct dir_struct *dir; + struct pathspec *pathspec; merge_fn_t fn; const char *msgs[NB_UNPACK_TREES_ERROR_TYPES]; /* |