Ramkumar Ramachandra artag...@gmail.com writes:
GIT_REFLOG_ACTION is an environment variable specifying the reflog
message to write after an action is completed. Other commands including
merge, reset, and commit respect it.
This incidentally fixes a bug in t/checkout-last. You can now expect
$ git checkout -
to work fine after an interactive rebase.
Signed-off-by: Ramkumar Ramachandra artag...@gmail.com
---
builtin/checkout.c | 11 ---
t/t2012-checkout-last.sh | 2 +-
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/builtin/checkout.c b/builtin/checkout.c
index f5b50e5..1e2af85 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -587,7 +587,7 @@ static void update_refs_for_switch(const struct
checkout_opts *opts,
struct branch_info *new)
{
struct strbuf msg = STRBUF_INIT;
- const char *old_desc;
+ const char *old_desc, *reflog_msg;
if (opts-new_branch) {
if (opts-new_orphan_branch) {
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;
if (!old_desc old-commit)
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));
Looks very sensible; we may need to audit programs that set and
export REFLOG_ACTION to make sure they do not do so incorrectly,
which wouldn't have mattered if they called checkout but now it
would with this fix, though.
if (!strcmp(new-name, HEAD) !new-path !opts-force_detach) {
/* Nothing to do. */
diff --git a/t/t2012-checkout-last.sh b/t/t2012-checkout-last.sh
index 5729487..ab80da7 100755
--- a/t/t2012-checkout-last.sh
+++ b/t/t2012-checkout-last.sh
@@ -116,7 +116,7 @@ test_expect_success 'master...' '
test z$(git rev-parse --verify HEAD) = z$(git rev-parse --verify
master^)
'
-test_expect_failure 'checkout - works after an interactive rebase' '
+test_expect_success 'checkout - works after an interactive rebase' '
git checkout master
git checkout other
git rebase -i master
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html