This series makes sure that objects referenced by all worktrees are marked reachable so that we don't accidentally delete objects that are being used. Previously per-worktree references in index, detached HEAD or per-worktree reflogs come from current worktree only, not all worktrees. The series deals with git-prune and git-gc specifically. I left out "git rev-list". It shares the same problem because it will only consider current worktree's HEAD, index and per-worktree reflogs. The problem is I am not sure if we simply just change, say --indexed-objects, to cover all indexes, or should we only do that with "--all-worktrees --indexed-objects". I guess this is up for discussion. Nguyễn Thái Ngọc Duy (4): revision.c: move read_cache() out of add_index_objects_to_pending() reachable.c: mark reachable objects in index from all worktrees reachable.c: mark reachable detached HEAD from all worktrees reachable.c: make reachable reflogs for all per-worktree reflogs reachable.c | 47 +++++++++++++++++++++++++++++++++++++++++------ revision.c | 34 +++++++++++++++++++++++++++------- revision.h | 7 ++++++- t/t5304-prune.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 14 deletions(-) -- 2.8.2.524.g6ff3d78 -- 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