[PATCH 0/4] Fix prune/gc problem with multiple worktrees
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Jun 1, 2016, 10:45 UTC
- Message-ID
- <20160601104519.16563-1-pclouds@gmail.com>
- In-Reply-To
- <574D382A.8030809@kdbg.org>
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