From be489d02d2f95b34e8f0fd15b9ec4752a11edd4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Wed, 23 Aug 2017 19:36:52 +0700 Subject: revision.c: --indexed-objects add objects from all worktrees MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the result of single_worktree flag never being set (no way to up until now). To get objects from current index only, set single_worktree. The other add_index_objects_to_pending's caller is mark_reachable_objects() (e.g. "git prune") which also mark objects from all indexes. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Junio C Hamano --- revision.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'revision.c') diff --git a/revision.c b/revision.c index 6c46ad6c8a..f35cb49af5 100644 --- a/revision.c +++ b/revision.c @@ -19,6 +19,7 @@ #include "dir.h" #include "cache-tree.h" #include "bisect.h" +#include "worktree.h" volatile show_early_output_fn_t show_early_output; @@ -1290,8 +1291,28 @@ static void do_add_index_objects_to_pending(struct rev_info *revs, void add_index_objects_to_pending(struct rev_info *revs, unsigned int flags) { + struct worktree **worktrees, **p; + read_cache(); do_add_index_objects_to_pending(revs, &the_index); + + if (revs->single_worktree) + return; + + worktrees = get_worktrees(0); + for (p = worktrees; *p; p++) { + struct worktree *wt = *p; + struct index_state istate = { NULL }; + + if (wt->is_current) + continue; /* current index already taken care of */ + + if (read_index_from(&istate, + worktree_git_path(wt, "index")) > 0) + do_add_index_objects_to_pending(revs, &istate); + discard_index(&istate); + } + free_worktrees(worktrees); } static int add_parents_only(struct rev_info *revs, const char *arg_, int flags, -- cgit v1.2.1