lock_ref_sha1_basic(): do not set force_write for missing references
If a reference is missing, its SHA-1 will be null_sha1, which can't possibly match a new value that ref_transaction_commit() is trying to update it to. So there is no need to set force_write in this scenario. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Mar 2, 2015 at 10:29 UTC
074336e5ed4ff10577f22c6812e092e3f6607405
1 file changed
+6
-9
refs.c
+6
-9
@@ -2259,7 +2259,6 @@ static struct ref_lock *lock_ref_sha1_basic(const char *refname,
2259
int type, lflags;
2260
int mustexist = (old_sha1 && !is_null_sha1(old_sha1));
2261
int resolve_flags = 0;
2262
- int missing = 0;
2262
int attempts_remaining = 3;
2263
2264
lock = xcalloc(1, sizeof(struct ref_lock));
@@ -2298,13 +2297,13 @@ static struct ref_lock *lock_ref_sha1_basic(const char *refname,
2297
orig_refname, strerror(errno));
2298
goto error_return;
2299
}
2301
- missing = is_null_sha1(lock->old_sha1);
2302
- /* When the ref did not exist and we are creating it,
2303
- * make sure there is no existing ref that is packed
2304
- * whose name begins with our refname, nor a ref whose
2305
- * name is a proper prefix of our refname.
2300
+ /*
2301
+ * If the ref did not exist and we are creating it, make sure
2302
+ * there is no existing packed ref whose name begins with our
2303
+ * refname, nor a packed ref whose name is a proper prefix of
2304
+ * our refname.
2305
*/
2307
- if (missing &&
2306
+ if (is_null_sha1(lock->old_sha1) &&
2307
!is_refname_available(refname, skip, get_packed_refs(&ref_cache))) {
2308
last_errno = ENOTDIR;
2309
goto error_return;
@@ -2320,8 +2319,6 @@ static struct ref_lock *lock_ref_sha1_basic(const char *refname,
2319
lock->ref_name = xstrdup(refname);
2320
lock->orig_ref_name = xstrdup(orig_refname);
2321
ref_file = git_path("%s", refname);
2323
- if (missing)
2324
- lock->force_write = 1;
2322
if ((flags & REF_NODEREF) && (type & REF_ISSYMREF))
2323
lock->force_write = 1;
2324