diff options
author | David Turner <dturner@twopensource.com> | 2016-09-04 18:08:44 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-09 15:28:14 -0700 |
commit | 0c09ec07d1e617be5f2d7b5c937b60e77a30ede2 (patch) | |
tree | f069f2a0fd432529018dd7747baea8475236097e /refs/files-backend.c | |
parent | refs: make lock generic (diff) | |
download | tgif-0c09ec07d1e617be5f2d7b5c937b60e77a30ede2.tar.xz |
refs: implement iteration over only per-worktree refs
Alternate refs backends might still use files to store per-worktree
refs. So provide a way to iterate over only the per-worktree references
in a ref_store. The other backend can set up a files ref_store and
iterate using the new DO_FOR_EACH_PER_WORKTREE_ONLY flag when iterating.
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs/files-backend.c')
-rw-r--r-- | refs/files-backend.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/refs/files-backend.c b/refs/files-backend.c index 82b3ac0dbc..47710fcf28 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1798,6 +1798,10 @@ static int files_ref_iterator_advance(struct ref_iterator *ref_iterator) int ok; while ((ok = ref_iterator_advance(iter->iter0)) == ITER_OK) { + if (iter->flags & DO_FOR_EACH_PER_WORKTREE_ONLY && + ref_type(iter->iter0->refname) != REF_TYPE_PER_WORKTREE) + continue; + if (!(iter->flags & DO_FOR_EACH_INCLUDE_BROKEN) && !ref_resolves_to_object(iter->iter0->refname, iter->iter0->oid, |