Skip to content

Commit

Permalink
write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
Browse files Browse the repository at this point in the history
This is the first step towards separating the checking and writing of
the new reference value to committing the change.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Michael Haggerty authored and Junio C Hamano committed May 13, 2015
1 parent 71ad050 commit 1d45523
Showing 1 changed file with 26 additions and 12 deletions.
38 changes: 26 additions & 12 deletions refs.c
Original file line number Diff line number Diff line change
Expand Up @@ -3048,23 +3048,15 @@ int is_branch(const char *refname)
}

/*
* Write sha1 into the ref specified by the lock. Make sure that errno
* is sane on error.
* Write sha1 into the open lockfile, then close the lockfile. On
* errors, rollback the lockfile and set errno to reflect the problem.
*/
static int write_ref_sha1(struct ref_lock *lock,
const unsigned char *sha1, const char *logmsg)
static int write_ref_to_lockfile(struct ref_lock *lock,
const unsigned char *sha1)
{
static char term = '\n';
struct object *o;

if (!lock) {
errno = EINVAL;
return -1;
}
if (!lock->force_write && !hashcmp(lock->old_sha1, sha1)) {
unlock_ref(lock);
return 0;
}
o = parse_object(sha1);
if (!o) {
error("Trying to write ref %s with nonexistent object %s",
Expand All @@ -3089,6 +3081,28 @@ static int write_ref_sha1(struct ref_lock *lock,
errno = save_errno;
return -1;
}
return 0;
}

/*
* Write sha1 into the ref specified by the lock. Make sure that errno
* is sane on error.
*/
static int write_ref_sha1(struct ref_lock *lock,
const unsigned char *sha1, const char *logmsg)
{
if (!lock) {
errno = EINVAL;
return -1;
}
if (!lock->force_write && !hashcmp(lock->old_sha1, sha1)) {
unlock_ref(lock);
return 0;
}

if (write_ref_to_lockfile(lock, sha1))
return -1;

clear_loose_ref_cache(&ref_cache);
if (log_ref_write(lock->ref_name, lock->old_sha1, sha1, logmsg) < 0 ||
(strcmp(lock->ref_name, lock->orig_ref_name) &&
Expand Down

0 comments on commit 1d45523

Please sign in to comment.