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 <kyle@xxxxxxxxxx> --- 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