checkout: respect GIT_REFLOG_ACTION
GIT_REFLOG_ACTION is an environment variable specifying the reflog message to write after an action is completed. Several other commands including merge, reset, and commit respect it. Fix the failing tests in t/checkout-last by making checkout respect it too. You can now expect $ git checkout - to work as expected after any operation that internally uses "checkout" as its implementation detail, e.g. "rebase". Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ec50631064
commit
3bed291a3b
@ -587,7 +587,7 @@ static void update_refs_for_switch(const struct checkout_opts *opts,
|
|||||||
struct branch_info *new)
|
struct branch_info *new)
|
||||||
{
|
{
|
||||||
struct strbuf msg = STRBUF_INIT;
|
struct strbuf msg = STRBUF_INIT;
|
||||||
const char *old_desc;
|
const char *old_desc, *reflog_msg;
|
||||||
if (opts->new_branch) {
|
if (opts->new_branch) {
|
||||||
if (opts->new_orphan_branch) {
|
if (opts->new_orphan_branch) {
|
||||||
if (opts->new_branch_log && !log_all_ref_updates) {
|
if (opts->new_branch_log && !log_all_ref_updates) {
|
||||||
@ -620,8 +620,13 @@ static void update_refs_for_switch(const struct checkout_opts *opts,
|
|||||||
old_desc = old->name;
|
old_desc = old->name;
|
||||||
if (!old_desc && old->commit)
|
if (!old_desc && old->commit)
|
||||||
old_desc = sha1_to_hex(old->commit->object.sha1);
|
old_desc = sha1_to_hex(old->commit->object.sha1);
|
||||||
strbuf_addf(&msg, "checkout: moving from %s to %s",
|
|
||||||
old_desc ? old_desc : "(invalid)", new->name);
|
reflog_msg = getenv("GIT_REFLOG_ACTION");
|
||||||
|
if (!reflog_msg)
|
||||||
|
strbuf_addf(&msg, "checkout: moving from %s to %s",
|
||||||
|
old_desc ? old_desc : "(invalid)", new->name);
|
||||||
|
else
|
||||||
|
strbuf_insert(&msg, 0, reflog_msg, strlen(reflog_msg));
|
||||||
|
|
||||||
if (!strcmp(new->name, "HEAD") && !new->path && !opts->force_detach) {
|
if (!strcmp(new->name, "HEAD") && !new->path && !opts->force_detach) {
|
||||||
/* Nothing to do. */
|
/* Nothing to do. */
|
||||||
|
@ -116,7 +116,7 @@ test_expect_success 'master...' '
|
|||||||
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify master^)"
|
test "z$(git rev-parse --verify HEAD)" = "z$(git rev-parse --verify master^)"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure '"checkout -" works after a rebase A' '
|
test_expect_success '"checkout -" works after a rebase A' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
git checkout other &&
|
git checkout other &&
|
||||||
git rebase master &&
|
git rebase master &&
|
||||||
@ -124,7 +124,7 @@ test_expect_failure '"checkout -" works after a rebase A' '
|
|||||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure '"checkout -" works after a rebase A B' '
|
test_expect_success '"checkout -" works after a rebase A B' '
|
||||||
git branch moodle master~1 &&
|
git branch moodle master~1 &&
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
git checkout other &&
|
git checkout other &&
|
||||||
@ -133,7 +133,7 @@ test_expect_failure '"checkout -" works after a rebase A B' '
|
|||||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure '"checkout -" works after a rebase -i A' '
|
test_expect_success '"checkout -" works after a rebase -i A' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
git checkout other &&
|
git checkout other &&
|
||||||
git rebase -i master &&
|
git rebase -i master &&
|
||||||
@ -141,7 +141,7 @@ test_expect_failure '"checkout -" works after a rebase -i A' '
|
|||||||
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
test "z$(git symbolic-ref HEAD)" = "zrefs/heads/master"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure '"checkout -" works after a rebase -i A B' '
|
test_expect_success '"checkout -" works after a rebase -i A B' '
|
||||||
git branch foodle master~1 &&
|
git branch foodle master~1 &&
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
git checkout other &&
|
git checkout other &&
|
||||||
|
Loading…
Reference in New Issue
Block a user