{"thread":{"id":"34216","subject":"[PATCH v2] sequencer: write useful reflog message for fast-forward","startedAt":"2013-06-19T07:37:09Z","lastAt":"2013-06-19T07:37:09Z","messageCount":1,"participants":["Ramkumar Ramachandra"],"isPatch":true,"patchVersion":2,"patchTotal":null},"messages":[{"id":"221342","messageId":"1371627429-24819-1-git-send-email-artagnon@gmail.com","threadId":"34216","inReplyTo":null,"subject":"[PATCH v2] sequencer: write useful reflog message for fast-forward","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2013-06-19T07:37:09Z","receivedAt":"2013-06-19T07:37:09Z","isPatch":true,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"The following command\n\n  $ git cherry-pick --ff b8bb3f\n\nwrites the following uninformative message to the reflog\n\n  cherry-pick\n\nImprove it to\n\n  cherry-pick: fast-forward\n\nAvoid hard-coding \"cherry-pick\" in fast_forward_to(), so the sequencer\nis generic enough to support future actions.\n\nSigned-off-by: Ramkumar Ramachandra <artagnon@gmail.com>\n---\n Changes since v1:\n\n - fast_forward_to() now takes opts to determine action_name()\n - strbuf_release() to free memory\n\n sequencer.c | 11 ++++++++---\n 1 file changed, 8 insertions(+), 3 deletions(-)\n\ndiff --git a/sequencer.c b/sequencer.c\nindex ab6f8a7..423c1f5 100644\n--- a/sequencer.c\n+++ b/sequencer.c\n@@ -270,15 +270,20 @@ static int error_dirty_index(struct replay_opts *opts)\n }\n \n static int fast_forward_to(const unsigned char *to, const unsigned char *from,\n-\t\t\t   int unborn)\n+\t\t\tint unborn, struct replay_opts *opts)\n {\n \tstruct ref_lock *ref_lock;\n+\tstruct strbuf sb = STRBUF_INIT;\n+\tint ret;\n \n \tread_cache();\n \tif (checkout_fast_forward(from, to, 1))\n \t\texit(1); /* the callee should have complained already */\n \tref_lock = lock_any_ref_for_update(\"HEAD\", unborn ? null_sha1 : from, 0);\n-\treturn write_ref_sha1(ref_lock, to, \"cherry-pick\");\n+\tstrbuf_addf(&sb, \"%s: fast-forward\", action_name(opts));\n+\tret = write_ref_sha1(ref_lock, to, sb.buf);\n+\tstrbuf_release(&sb);\n+\treturn ret;\n }\n \n static int do_recursive_merge(struct commit *base, struct commit *next,\n@@ -523,7 +528,7 @@ static int do_pick_commit(struct commit *commit, struct replay_opts *opts)\n \tif (opts->allow_ff &&\n \t    ((parent && !hashcmp(parent->object.sha1, head)) ||\n \t     (!parent && unborn)))\n-\t     return fast_forward_to(commit->object.sha1, head, unborn);\n+\t\treturn fast_forward_to(commit->object.sha1, head, unborn, opts);\n \n \tif (parent && parse_commit(parent) < 0)\n \t\t/* TRANSLATORS: The first %s will be \"revert\" or\n-- \n1.8.3.1.449.g41b32a4.dirty\n"}]}