In order to do partial commits, git-commit overlays a tree on the cache and checks pathspecs against the result. Currently, the overlaying is done using "prefix" which prevents relative pathspecs with ".." and absolute pathspec from matching when they refer to files not under "prefix" and absent from the index, but still in the tree (i.e. files staged for removal). Overlay the full tree instead. Reported-by: Reuben Thomas <rrt@xxxxxxxx> Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> --- RFC because lack of test, and also because I'm not sure we want this, and what to do about git add which has the same problem, but would need a different fix. --- builtin/commit.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/builtin/commit.c b/builtin/commit.c index e1af9b1..431590c 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -257,7 +257,7 @@ static int list_paths(struct string_list *list, const char *with_tree, m = xcalloc(1, i); if (with_tree) - overlay_tree_on_cache(with_tree, prefix); + overlay_tree_on_cache(with_tree, NULL); for (i = 0; i < active_nr; i++) { struct cache_entry *ce = active_cache[i]; -- 1.7.6.336.gdf067 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html