revision.c: --indexed-objects add objects from all worktrees
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 <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									6c3d818154
								
							
						
					
					
						commit
						be489d02d2
					
				
							
								
								
									
										21
									
								
								revision.c
								
								
								
								
							
							
						
						
									
										21
									
								
								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, | ||||
|  |  | |||
|  | @ -283,4 +283,13 @@ test_expect_success 'prune: handle alternate object database' ' | |||
| 	git -C B prune | ||||
| ' | ||||
|  | ||||
| test_expect_success 'prune: handle index in multiple worktrees' ' | ||||
| 	git worktree add second-worktree && | ||||
| 	echo "new blob for second-worktree" >second-worktree/blob && | ||||
| 	git -C second-worktree add blob && | ||||
| 	git prune --expire=now && | ||||
| 	git -C second-worktree show :blob >actual && | ||||
| 	test_cmp second-worktree/blob actual | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Nguyễn Thái Ngọc Duy
						Nguyễn Thái Ngọc Duy