]> git.ipfire.org Git - thirdparty/git.git/blobdiff - refs.c
repack: turn on "ref paranoia" when doing a destructive repack
[thirdparty/git.git] / refs.c
diff --git a/refs.c b/refs.c
index 5fcacc6c41e6c7033367cc9c4cf7c18b33eea286..6c788814200fbb10f2bcf2cbe3f2b2b057ecf6c2 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1618,8 +1618,7 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags, unsigned
 
 char *resolve_refdup(const char *ref, int resolve_flags, unsigned char *sha1, int *flags)
 {
-       const char *ret = resolve_ref_unsafe(ref, resolve_flags, sha1, flags);
-       return ret ? xstrdup(ret) : NULL;
+       return xstrdup_or_null(resolve_ref_unsafe(ref, resolve_flags, sha1, flags));
 }
 
 /* The argument to filter_refs */
@@ -1908,6 +1907,11 @@ static int do_for_each_ref(struct ref_cache *refs, const char *base,
        data.fn = fn;
        data.cb_data = cb_data;
 
+       if (ref_paranoia < 0)
+               ref_paranoia = git_env_bool("GIT_REF_PARANOIA", 0);
+       if (ref_paranoia)
+               data.flags |= DO_FOR_EACH_INCLUDE_BROKEN;
+
        return do_for_each_entry(refs, base, do_one_ref, &data);
 }
 
@@ -2334,7 +2338,7 @@ static struct ref_lock *lock_ref_sha1_basic(const char *refname,
                        struct strbuf err = STRBUF_INIT;
                        unable_to_lock_message(ref_file, errno, &err);
                        error("%s", err.buf);
-                       strbuf_reset(&err);
+                       strbuf_release(&err);
                        goto error_return;
                }
        }