Skip to content
  • Jeff King's avatar
    fsck: return non-zero status on missing ref tips · 30d1038d
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Fsck tries hard to detect missing objects, and will complain
    (and exit non-zero) about any inter-object links that are
    missing. However, it will not exit non-zero for any missing
    ref tips, meaning that a severely broken repository may
    still pass "git fsck && echo ok".
    
    The problem is that we use for_each_ref to iterate over the
    ref tips, which hides broken tips. It does at least print an
    error from the refs.c code, but fsck does not ever see the
    ref and cannot note the problem in its exit code. We can solve
    this by using for_each_rawref and noting the error ourselves.
    
    In addition to adding tests for this case, we add tests for
    all types of missing-object links (all of which worked, but
    which we were not testing).
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    30d1038d