[PATCH 3/3] rename_ref: replace empty deletion message in HEAD's log
From: Kyle Meyer <hidden>
Date: 2017-02-17 03:59:05
Subsystem:
the rest · Maintainer:
Linus Torvalds
When the current branch is renamed, the deletion of the old ref is recorded in HEAD's log with an empty message. Now that delete_refs() accepts a reflog message, provide a more descriptive message. This message will not be included in the reflog of the renamed branch, but its log already covers the renaming event with a message of "Branch: renamed ...". Signed-off-by: Kyle Meyer <redacted> --- refs/files-backend.c | 8 +++++++- t/t3200-branch.sh | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/refs/files-backend.c b/refs/files-backend.c
index ffa75d816..bb5df7ee6 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c@@ -2598,6 +2598,7 @@ static int files_rename_ref(struct ref_store *ref_store, struct stat loginfo; int log = !lstat(git_path("logs/%s", oldrefname), &loginfo); struct strbuf err = STRBUF_INIT; + struct strbuf logmsg_del = STRBUF_INIT; if (log && S_ISLNK(loginfo.st_mode)) return error("reflog for %s is a symlink", oldrefname);
@@ -2616,10 +2617,15 @@ static int files_rename_ref(struct ref_store *ref_store, return error("unable to move logfile logs/%s to "TMP_RENAMED_LOG": %s", oldrefname, strerror(errno)); - if (delete_ref(oldrefname, orig_sha1, REF_NODEREF, NULL)) { + strbuf_addf(&logmsg_del, "Deleted %s", oldrefname); + + if (delete_ref(oldrefname, orig_sha1, REF_NODEREF, logmsg_del.buf)) { error("unable to delete old %s", oldrefname); + strbuf_release(&logmsg_del); goto rollback; } + strbuf_release(&logmsg_del); + /* * Since we are doing a shallow lookup, sha1 is not the
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index 8a833f354..4af7cd2b7 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh@@ -139,6 +139,10 @@ test_expect_success 'git branch -M baz bam should succeed when baz is checked ou test $(git rev-parse --abbrev-ref HEAD) = bam ' +test_expect_success 'git branch -M baz bam should add entry to .git/logs/HEAD' ' + grep "Deleted refs/heads/baz$" .git/logs/HEAD >/dev/null +' + test_expect_success 'git branch -M baz bam should succeed when baz is checked out as linked working tree' ' git checkout master && git worktree add -b baz bazdir &&
--
2.11.1