refs: introduce a "ref paranoia" flag
commit49672f26d9a3826a6a74c6ff4d2409b7b0c74495
authorJeff King <peff@peff.net>
Fri, 20 Mar 2015 18:43:06 +0000 (20 14:43 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Mar 2015 19:40:49 +0000 (20 12:40 -0700)
tree455516c784f1797d24873010410b4a5a225788c9
parent8b43fb18f808524297a050e33f33db8569bc1116
refs: introduce a "ref paranoia" flag

Most operations that iterate over refs are happy to ignore
broken cruft. However, some operations should be performed
with knowledge of these broken refs, because it is better
for the operation to choke on a missing object than it is to
silently pretend that the ref did not exist (e.g., if we are
computing the set of reachable tips in order to prune
objects).

These processes could just call for_each_rawref, except that
ref iteration is often hidden behind other interfaces. For
instance, for a destructive "repack -ad", we would have to
inform "pack-objects" that we are destructive, and then it
would in turn have to tell the revision code that our
"--all" should include broken refs.

It's much simpler to just set a global for "dangerous"
operations that includes broken refs in all iterations.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git.txt
cache.h
environment.c
refs.c