diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-11-08 17:32:49 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-08 17:32:49 -0800 |
commit | 832e719d79296f1942a2aca5fb067bc610986fc4 (patch) | |
tree | 8dfdf706b10fa4891ebaceb5ec7543078a73cc44 /refs.c | |
parent | 2819854ec5013fc0958ea477fa49d53fc0faee80 (diff) | |
parent | 16ed2f48be228918af3d1a6c5a6a4fe9b832cb84 (diff) | |
download | git-832e719d79296f1942a2aca5fb067bc610986fc4.tar.gz |
Merge branch 'cb/maint-update-ref-fix' into maint
* cb/maint-update-ref-fix:
push: fix local refs update if already up-to-date
do not force write of packed refs
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -789,10 +789,10 @@ static struct ref_lock *lock_ref_sha1_basic(const char *ref, const unsigned char char *ref_file; const char *orig_ref = ref; struct ref_lock *lock; - struct stat st; int last_errno = 0; int type, lflags; int mustexist = (old_sha1 && !is_null_sha1(old_sha1)); + int missing = 0; lock = xcalloc(1, sizeof(struct ref_lock)); lock->lock_fd = -1; @@ -820,12 +820,13 @@ static struct ref_lock *lock_ref_sha1_basic(const char *ref, const unsigned char orig_ref, strerror(errno)); goto error_return; } + missing = is_null_sha1(lock->old_sha1); /* When the ref did not exist and we are creating it, * make sure there is no existing ref that is packed * whose name begins with our refname, nor a ref whose * name is a proper prefix of our refname. */ - if (is_null_sha1(lock->old_sha1) && + if (missing && !is_refname_available(ref, NULL, get_packed_refs(), 0)) goto error_return; @@ -839,7 +840,7 @@ static struct ref_lock *lock_ref_sha1_basic(const char *ref, const unsigned char lock->ref_name = xstrdup(ref); lock->orig_ref_name = xstrdup(orig_ref); ref_file = git_path("%s", ref); - if (lstat(ref_file, &st) && errno == ENOENT) + if (missing) lock->force_write = 1; if ((flags & REF_NODEREF) && (type & REF_ISSYMREF)) lock->force_write = 1; |