char *real_ref, msg[PATH_MAX + 20];
struct strbuf ref = STRBUF_INIT;
int forcing = 0;
- int len;
- len = strlen(name);
- if (interpret_nth_last_branch(name, &ref) != len) {
- strbuf_reset(&ref);
- strbuf_add(&ref, name, len);
- }
- strbuf_splice(&ref, 0, 0, "refs/heads/", 11);
-
- if (check_ref_format(ref.buf))
+ if (strbuf_check_branch_ref(&ref, name))
die("'%s' is not a valid branch name.", name);
if (resolve_ref(ref.buf, sha1, 1, NULL)) {
lock = lock_any_ref_for_update(ref.buf, NULL, 0);
if (!lock)
- die("Failed to lock ref for update: %s.", strerror(errno));
+ die_errno("Failed to lock ref for update");
if (reflog)
log_all_ref_updates = 1;
setup_tracking(name, real_ref, track);
if (write_ref_sha1(lock, sha1, msg) < 0)
- die("Failed to write ref: %s.", strerror(errno));
+ die_errno("Failed to write ref");
strbuf_release(&ref);
free(real_ref);