{"thread":{"id":"43045","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","startedAt":"2016-08-10T19:21:56Z","lastAt":"2016-08-18T14:24:12Z","messageCount":8,"participants":["Stephen Morton","Christian Couder","Remi Galan Alfonso","Johannes Schindelin","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"293609","messageId":"09d485df-7d14-97f8-9db9-e3db7512bd68@nokia.com","threadId":"43045","inReplyTo":null,"subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Stephen Morton","fromEmail":"stephen.morton@nokia.com","sentAt":"2016-08-10T19:21:18Z","receivedAt":"2016-08-10T19:21:56Z","isPatch":false,"sender":{"key":"stephen.morton@nokia.com","avatar":"https://gravatar.com/avatar/710b2676975916f73774c03d77c48db73bfd4d6b29922de679d1f2612a6b0ba9?d=mp&s=160"},"body":"On Mon, Aug 1, 2016 at 5:12 AM, Johannes Schindelin \n<Johannes.Schindelin@gmx.de> wrote:\n> Hi Stephen,\n>\n> On Wed, 27 Jul  2016, Stephen Morton wrote:\n>\n>> On Wed, Jul  27, 2016 at 11:03 AM, Johannes Schindelin\n>>  <Johannes.Schindelin@gmx.de> wrote:\n>> >\n>> > On Wed,  27 Jul 2016, Stephen Morton wrote:\n>> >\n>> >>  diff --git a/sequencer.c b/sequencer.c\n>> >>  index cdfac82..ce06876 100644\n>> >> ---  a/sequencer.c\n>> >> +++  b/sequencer.c\n>> >> @@  -176,7 +176,8 @@ static void print_advice(int show_hint, struct\n>> >>  replay_opts *opts)\n>> >>             else\n>> >>                     advise(_(\"after resolving the conflicts, mark\n>> >> the  corrected paths\\n\"\n>> >>                              \"with 'git add <paths>' or 'git rm <paths>'\\n\"\n>> >> -                              \"and commit the result with 'git commit'\"));\n>> >> +                              \"then continue the %s with 'git %s\n>> >>  --continue'\\n\"\n>> >> +                              \"or cancel the %s operation with 'git\n>> >> %s  --abort'\" ),  action_name(opts), action_name(opts),\n>> >>  action_name(opts), action_name(opts));\n>> >\n>> > That is  an awful lot of repetition right there, with an added\n>> >  inconsistency that the action is referred to by its name alone in the\n>> >  \"--continue\" case, but with \"operation\" added in the \"--abort\" case.\n>> >\n>> > And  additionally, in the most common case (one commit to cherry-pick), the\n>> > advice  now suggests a more complicated operation than necessary: a simply\n>> > `git  commit` would be enough, then.\n>> >\n>> > Can't  we have a test whether this is the last of the commits to be\n>> >  cherry-picked, and if so, have the simpler advice again?\n>>\n>> Ok, knowing  that I'm not on the last element of the sequencer is\n>> beyond my  git code knowledge.\n>\n> Oh, my mistake:  I meant to say that this information could be easily\n> provided by  `pick_commits()` if it passed it to `print_advice()` via\n>  `do_pick_commit()`.\n>\n> Ciao,\n> Johannes\n\nFormatting on previous email was terrible, plus the diff wasn't \nperformed against origin. Re-sending.\n\n(Finally getting back to this.)\n\nSomething like the diff below, then Johannes?\n\n(I intentionally print the '--continue' hint even in the case whereit's \nlast of n commits that fails.)\n\n\nStephen\n\n~/ws/extern/git (maint *%>) > git diff @{u}\ndiff --git a/sequencer.c b/sequencer.c\nindex c6362d6..e0071aa 100644\n--- a/sequencer.c\n+++ b/sequencer.c\n@@ -154,7 +154,7 @@ static void free_message(struct commit *commit, \nstruct commit_message *msg)\n         unuse_commit_buffer(commit, msg->message);\n  }\n\n-static void print_advice(int show_hint, struct replay_opts *opts)\n+static void print_advice(int show_hint, int multiple_commits, struct \nreplay_opts *opts)\n  {\n         char *msg = getenv(\"GIT_CHERRY_PICK_HELP\");\n\n@@ -174,9 +174,14 @@ static void print_advice(int show_hint, struct \nreplay_opts *opts)\n                         advise(_(\"after resolving the conflicts, mark \nthe corrected paths\\n\"\n                                  \"with 'git add <paths>' or 'git rm \n<paths>'\"));\n                 else\n-                       advise(_(\"after resolving the conflicts, mark \nthe corrected paths\\n\"\n-                                \"with 'git add <paths>' or 'git rm \n<paths>'\\n\"\n-                                \"and commit the result with 'git \ncommit'\"));\n+                        if  (multiple_commits)\n+                               advise(_(\"after resolving the conflicts, \nmark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n+                                        \"then continue with 'git %s \n--continue'\\n\"\n+                                        \"or cancel with 'git %s \n--abort'\" ), action_name(opts), action_name(opts));\n+                        else\n+                                advise(_(\"after resolving the \nconflicts, mark the corrected paths\\n\"\n+                                        \"with 'git add <paths>' or 'git \nrm <paths>'\\n\"\n+                                        \"and commit the result with \n'git commit'\"));\n         }\n  }\n\n@@ -440,7 +445,7 @@ static int allow_empty(struct replay_opts *opts, \nstruct commit *commit)\n                 return 1;\n  }\n\n-static int do_pick_commit(struct commit *commit, struct replay_opts *opts)\n+static int do_pick_commit(struct commit *commit, struct replay_opts \n*opts, int multiple_commits)\n  {\n         unsigned char head[20];\n         struct commit *base, *next, *parent;\n@@ -595,7 +600,7 @@ static int do_pick_commit(struct commit *commit, \nstruct replay_opts *opts)\n                       : _(\"could not apply %s... %s\"),\n                       find_unique_abbrev(commit->object.oid.hash, \nDEFAULT_ABBREV),\n                       msg.subject);\n-               print_advice(res == 1, opts);\n+               print_advice(res == 1, multiple_commits, opts);\n                 rerere(opts->allow_rerere_auto);\n                 goto leave;\n         }\n@@ -959,6 +964,7 @@ static int pick_commits(struct commit_list \n*todo_list, struct replay_opts *opts)\n  {\n         struct commit_list *cur;\n         int res;\n+    int multiple_commits = (todo_list->next) != NULL;\n\n         setenv(GIT_REFLOG_ACTION, action_name(opts), 0);\n         if (opts->allow_ff)\n@@ -968,7 +974,7 @@ static int pick_commits(struct commit_list \n*todo_list, struct replay_opts *opts)\n\n         for (cur = todo_list; cur; cur = cur->next) {\n                 save_todo(cur, opts);\n-               res = do_pick_commit(cur->item, opts);\n+               res = do_pick_commit(cur->item, opts, multiple_commits);\n                 if (res)\n                         return res;\n         }\n@@ -1016,7 +1022,7 @@ static int sequencer_continue(struct replay_opts \n*opts)\n  static int single_pick(struct commit *cmit, struct replay_opts *opts)\n  {\n         setenv(GIT_REFLOG_ACTION, action_name(opts), 0);\n-       return do_pick_commit(cmit, opts);\n+       return do_pick_commit(cmit, opts, 0);\n  }\n\n  int sequencer_pick_revisions(struct replay_opts *opts)\n\n\n\n-- \nStephen Morton, 7750 SR Product Group, SW Development Tools/DevOps\nw: +1-613-784-6026 (int: 2-825-6026) m: +1-613-302-2589 | EST Time Zone\n\n"},{"id":"299270","messageId":"CAP8UFD04Z7JpoAA1kXkYFk5LD-GngbUDkbnpCEc3DNDXUgetEA@mail.gmail.com","threadId":"43045","inReplyTo":"09d485df-7d14-97f8-9db9-e3db7512bd68@nokia.com","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Christian Couder","fromEmail":"christian.couder@gmail.com","sentAt":"2016-08-14T11:44:43Z","receivedAt":"2016-08-14T11:44:59Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Hi Stephen,\n\nOn Wed, Aug 10, 2016 at 9:21 PM, Stephen Morton\n<stephen.morton@nokia.com> wrote:\n>\n> Formatting on previous email was terrible, plus the diff wasn't performed\n> against origin. Re-sending.\n\nThanks for working on this...\n\n> (Finally getting back to this.)\n>\n> Something like the diff below, then Johannes?\n\n...but please try to send a real patch.\n\nThere is https://github.com/git/git/blob/master/Documentation/SubmittingPatches\nand also SubmitGit that can help you do that.\n\n> (I intentionally print the '--continue' hint even in the case whereit's last\n> of n commits that fails.)\n>\n>\n> Stephen\n>\n>\n> ~/ws/extern/git (maint *%>) > git diff @{u}\n> diff --git a/sequencer.c b/sequencer.c\n> index c6362d6..e0071aa 100644\n> --- a/sequencer.c\n> +++ b/sequencer.c\n> @@ -154,7 +154,7 @@ static void free_message(struct commit *commit, struct\n> commit_message *msg)\n>         unuse_commit_buffer(commit, msg->message);\n>  }\n>\n> -static void print_advice(int show_hint, struct replay_opts *opts)\n> +static void print_advice(int show_hint, int multiple_commits, struct\n> replay_opts *opts)\n\nHere multiple_commits is not the last argument...\n\n>  {\n>         char *msg = getenv(\"GIT_CHERRY_PICK_HELP\");\n>\n> @@ -174,9 +174,14 @@ static void print_advice(int show_hint, struct\n> replay_opts *opts)\n>                         advise(_(\"after resolving the conflicts, mark the\n> corrected paths\\n\"\n>                                  \"with 'git add <paths>' or 'git rm\n> <paths>'\"));\n>                 else\n> -                       advise(_(\"after resolving the conflicts, mark the\n> corrected paths\\n\"\n> -                                \"with 'git add <paths>' or 'git rm\n> <paths>'\\n\"\n> -                                \"and commit the result with 'git\n> commit'\"));\n> +                        if  (multiple_commits)\n> +                               advise(_(\"after resolving the conflicts,\n> mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n> +                                        \"then continue with 'git %s\n> --continue'\\n\"\n> +                                        \"or cancel with 'git %s --abort'\"\n> ), action_name(opts), action_name(opts));\n> +                        else\n> +                                advise(_(\"after resolving the conflicts,\n> mark the corrected paths\\n\"\n> +                                        \"with 'git add <paths>' or 'git rm\n> <paths>'\\n\"\n> +                                        \"and commit the result with 'git\n> commit'\"));\n>         }\n>  }\n>\n> @@ -440,7 +445,7 @@ static int allow_empty(struct replay_opts *opts, struct\n> commit *commit)\n>                 return 1;\n>  }\n>\n> -static int do_pick_commit(struct commit *commit, struct replay_opts *opts)\n> +static int do_pick_commit(struct commit *commit, struct replay_opts *opts,\n> int multiple_commits)\n\n... but here multiple_commits is the last argument.\nIt would be better if it was more consistent.\n\n>  {\n>         unsigned char head[20];\n>         struct commit *base, *next, *parent;\n> @@ -595,7 +600,7 @@ static int do_pick_commit(struct commit *commit, struct\n> replay_opts *opts)\n>                       : _(\"could not apply %s... %s\"),\n>                       find_unique_abbrev(commit->object.oid.hash,\n> DEFAULT_ABBREV),\n>                       msg.subject);\n> -               print_advice(res == 1, opts);\n> +               print_advice(res == 1, multiple_commits, opts);\n>                 rerere(opts->allow_rerere_auto);\n>                 goto leave;\n>         }\n> @@ -959,6 +964,7 @@ static int pick_commits(struct commit_list *todo_list,\n> struct replay_opts *opts)\n>  {\n>         struct commit_list *cur;\n>         int res;\n> +    int multiple_commits = (todo_list->next) != NULL;\n\nWhy not \"last_commit\" instead of \"multiple_commits\"?\n\nThanks,\nChristian.\n"},{"id":"299436","messageId":"968827697.1226723.1471337060482.JavaMail.zimbra@ensimag.grenoble-inp.fr","threadId":"43045","inReplyTo":"09d485df-7d14-97f8-9db9-e3db7512bd68@nokia.com","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Remi Galan Alfonso","fromEmail":"remi.galan-alfonso@ensimag.grenoble-inp.fr","sentAt":"2016-08-16T08:44:20Z","receivedAt":"2016-08-16T08:24:02Z","isPatch":false,"sender":{"key":"remi.galan-alfonso@ensimag.grenoble-inp.fr","avatar":"https://avatars.githubusercontent.com/u/12509162?v=4"},"body":"Hi Stephen,\n\nStephen Morton <stephen.morton@nokia.com> writes:\n> +                        if  (multiple_commits)\n> +                               advise(_(\"after resolving the conflicts,\n> mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n> +                                        \"then continue with 'git %s\n> --continue'\\n\"\n> +                                        \"or cancel with 'git %s\n> --abort'\" ), action_name(opts), action_name(opts));\n> +                        else\n> +                                advise(_(\"after resolving the\n> conflicts, mark the corrected paths\\n\"\n> +                                        \"with 'git add <paths>' or 'git\n> rm <paths>'\\n\"\n> +                                        \"and commit the result with\n> 'git commit'\"));\n\nIn both cases (multiple_commits or not), the beginning of the advise\nis nearly the same, with only a '\\n' in the middle being the\ndifference:\n\nmultiple_commits:\n \"after resolving the conflicts, mark the corrected paths with 'git\n add <paths>' or 'git rm <paths>'\\n\"\n\n!multiple_commits:\n \"after resolving the conflicts, mark the corrected paths\\n with 'git\n add <paths>' or 'git rm <paths>'\\n\"\n                                                  ~~~~~~~^\n\nIn 'multiple_commits' case the advise is more than 80 characters long,\ndid you forget the '\\n' in that case?\n\nIf you end up using the same beginning of advice, maybe it's possible\nto give it before the 'if(multiple_commits)' and avoid duplication of\nthe lines.\n\nThanks,\nRémi\n"},{"id":"299533","messageId":"alpine.DEB.2.20.1608171112580.4924@virtualbox","threadId":"43045","inReplyTo":"968827697.1226723.1471337060482.JavaMail.zimbra@ensimag.grenoble-inp.fr","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2016-08-17T09:13:43Z","receivedAt":"2016-08-17T09:20:46Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 16 Aug 2016, Remi Galan Alfonso wrote:\n\n> Stephen Morton <stephen.morton@nokia.com> writes:\n> > +                        if  (multiple_commits)\n> > +                               advise(_(\"after resolving the conflicts,\n> > mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n> > +                                        \"then continue with 'git %s\n> > --continue'\\n\"\n> > +                                        \"or cancel with 'git %s\n> > --abort'\" ), action_name(opts), action_name(opts));\n> > +                        else\n> > +                                advise(_(\"after resolving the\n> > conflicts, mark the corrected paths\\n\"\n> > +                                        \"with 'git add <paths>' or 'git\n> > rm <paths>'\\n\"\n> > +                                        \"and commit the result with\n> > 'git commit'\"));\n> \n> In both cases (multiple_commits or not), the beginning of the advise\n> is nearly the same, with only a '\\n' in the middle being the\n> difference:\n> \n> multiple_commits:\n>  \"after resolving the conflicts, mark the corrected paths with 'git\n>  add <paths>' or 'git rm <paths>'\\n\"\n> \n> !multiple_commits:\n>  \"after resolving the conflicts, mark the corrected paths\\n with 'git\n>  add <paths>' or 'git rm <paths>'\\n\"\n>                                                   ~~~~~~~^\n> \n> In 'multiple_commits' case the advise is more than 80 characters long,\n> did you forget the '\\n' in that case?\n> \n> If you end up using the same beginning of advice, maybe it's possible\n> to give it before the 'if(multiple_commits)' and avoid duplication of\n> the lines.\n\nI concur with this, and also with Christian's advice to append the\nparameter consistently as last one, and also with renaming it to\n\"last_commit\".\n\nCiao,\nJohannes\n"},{"id":"299546","messageId":"f58933df-352a-9d2b-a35a-9c48cb2d958e@nokia.com","threadId":"43045","inReplyTo":"CAP8UFD04Z7JpoAA1kXkYFk5LD-GngbUDkbnpCEc3DNDXUgetEA@mail.gmail.com","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Stephen Morton","fromEmail":"stephen.morton@nokia.com","sentAt":"2016-08-17T13:42:56Z","receivedAt":"2016-08-17T13:43:00Z","isPatch":false,"sender":{"key":"stephen.morton@nokia.com","avatar":"https://gravatar.com/avatar/710b2676975916f73774c03d77c48db73bfd4d6b29922de679d1f2612a6b0ba9?d=mp&s=160"},"body":"Responding to a few comments...\n\nOn 2016-08-14 7:44 AM, Christian Couder wrote:\n> multiple_commits)\n> ... but here multiple_commits is the last argument.\n> It would be better if it was more consistent.\n(Johannes made the same comment.)\nYes. Will do.\n\n\n>\n> multiple_commits = (todo_list->next) != NULL;\n> Why not \"last_commit\" instead of \"multiple_commits\"?\n>\n\nBecause it *isn't*. You can see that in pick_commits(), I set \nmultiple_commits outside of the `for todo_list` loop. It is not \nre-evaluated at every iteration of the loop. As per my comment when \nemailing the patch \"I intentionally print the '--continue' hint even in \nthe case where it's last of n commits that fails. \" I think it makes \nmuch more sense that \"this is the message you always get when \ncherry-picking multiple commits as opposed to \"this is the message you \nsometimes get, except when it's the last one\". (Yes, the careful \nobserver will realize that if when cherry-picking multiple commits, \nthere are conflicts in the second-last and last then the --continue  \nfrom the second-last will result in multiple_commits being set to 0. I \ncan live with that.)\n\n\nOn 2016-08-16 4:44 AM, Remi Galan Alfonso wrote:\n> Hi Stephen,\n>\n> Stephen Morton <stephen.morton@nokia.com> writes:\n>> +                        if  (multiple_commits)\n>> +                               advise(_(\"after resolving the conflicts,\n>> mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n>> +                                        \"then continue with 'git %s\n>> --continue'\\n\"\n>> +                                        \"or cancel with 'git %s\n>> --abort'\" ), action_name(opts), action_name(opts));\n>> +                        else\n>> +                                advise(_(\"after resolving the\n>> conflicts, mark the corrected paths\\n\"\n>> +                                        \"with 'git add <paths>' or 'git\n>> rm <paths>'\\n\"\n>> +                                        \"and commit the result with\n>> 'git commit'\"));\n> In both cases (multiple_commits or not), the beginning of the advise\n> is nearly the same, with only a '\\n' in the middle being the\n> difference:\n>\n> multiple_commits:\n>   \"after resolving the conflicts, mark the corrected paths with 'git\n>   add <paths>' or 'git rm <paths>'\\n\"\n>\n> !multiple_commits:\n>   \"after resolving the conflicts, mark the corrected paths\\n with 'git\n>   add <paths>' or 'git rm <paths>'\\n\"\n>                                                    ~~~~~~~^\n>\n> In 'multiple_commits' case the advise is more than 80 characters long,\n> did you forget the '\\n' in that case?\nA previous comment had indicated that having 4 lines was too many. And I \ntend to agree. So I tried to squash it into 3. Back in xterm days, 80 \ncharacters was sacrosanct, but is it really a big deal to exceed it now?\n\n\nOn 2016-08-14 7:44 AM, Christian Couder wrote:\n> ...but please try to send a real patch.\n>\n> There is https://github.com/git/git/blob/master/Documentation/SubmittingPatches\n> and also SubmitGit that can help you do that.\nAgreed. I just want to send a patch that stands a reasonable chance of \ngetting accepted.\n\nStephen\n\n\n-- \nStephen Morton, 7750 SR Product Group, SW Development Tools/DevOps\nw: +1-613-784-6026 (int: 2-825-6026) m: +1-613-302-2589 | EST Time Zone\n\n"},{"id":"299548","messageId":"1592315356.1230893.1471443850115.JavaMail.zimbra@ensimag.grenoble-inp.fr","threadId":"43045","inReplyTo":"f58933df-352a-9d2b-a35a-9c48cb2d958e@nokia.com","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Remi Galan Alfonso","fromEmail":"remi.galan-alfonso@ensimag.grenoble-inp.fr","sentAt":"2016-08-17T14:24:10Z","receivedAt":"2016-08-17T14:03:12Z","isPatch":false,"sender":{"key":"remi.galan-alfonso@ensimag.grenoble-inp.fr","avatar":"https://avatars.githubusercontent.com/u/12509162?v=4"},"body":"Stephen Morton <stephen.morton@nokia.com> writes:\n> [snip]\n> On 2016-08-16 4:44 AM, Remi Galan Alfonso wrote:\n>> Hi Stephen,\n>>\n>> Stephen Morton <stephen.morton@nokia.com> writes:\n>>> +                        if  (multiple_commits)\n>>> +                               advise(_(\"after resolving the conflicts,\n>>> mark the corrected paths with 'git add <paths>' or 'git rm <paths>'\\n\"\n>>> +                                        \"then continue with 'git %s\n>>> --continue'\\n\"\n>>> +                                        \"or cancel with 'git %s\n>>> --abort'\" ), action_name(opts), action_name(opts));\n>>> +                        else\n>>> +                                advise(_(\"after resolving the\n>>> conflicts, mark the corrected paths\\n\"\n>>> +                                        \"with 'git add <paths>' or 'git\n>>> rm <paths>'\\n\"\n>>> +                                        \"and commit the result with\n>>> 'git commit'\"));\n>> In both cases (multiple_commits or not), the beginning of the advise\n>> is nearly the same, with only a '\\n' in the middle being the\n>> difference:\n>>\n>> multiple_commits:\n>>   \"after resolving the conflicts, mark the corrected paths with 'git\n>>   add <paths>' or 'git rm <paths>'\\n\"\n>>\n>> !multiple_commits:\n>>   \"after resolving the conflicts, mark the corrected paths\\n with 'git\n>>   add <paths>' or 'git rm <paths>'\\n\"\n>>                                                    ~~~~~~~^\n>>\n>> In 'multiple_commits' case the advise is more than 80 characters long,\n>> did you forget the '\\n' in that case?\n> A previous comment had indicated that having 4 lines was too many. And I\n> tend to agree. So I tried to squash it into 3. Back in xterm days, 80\n> characters was sacrosanct, but is it really a big deal to exceed it now?\n\nEither way (3 or 4 lines) I find it strange to have both advices\nstart in the same way except that one is split and not the other.\n\nI cannot tell if it's a big deal or not to exceed 80 characters\nbut FWIW most of my stuff (terminal and emacs) is 80 columns\nlong, and I haven't known the \"xterm days\".\n\nThanks,\nRémi\n"},{"id":"299550","messageId":"xmqqa8gbbee8.fsf@gitster.mtv.corp.google.com","threadId":"43045","inReplyTo":"1592315356.1230893.1471443850115.JavaMail.zimbra@ensimag.grenoble-inp.fr","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-08-17T15:31:43Z","receivedAt":"2016-08-17T15:31:50Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Remi Galan Alfonso <remi.galan-alfonso@ensimag.grenoble-inp.fr>\nwrites:\n\n> Either way (3 or 4 lines) I find it strange to have both advices\n> start in the same way except that one is split and not the other.\n\nTrue.\n"},{"id":"299613","messageId":"alpine.DEB.2.20.1608181612340.4924@virtualbox","threadId":"43045","inReplyTo":"f58933df-352a-9d2b-a35a-9c48cb2d958e@nokia.com","subject":"Re: git cherry-pick conflict error message is deceptive when cherry-picking multiple commits","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2016-08-18T14:15:41Z","receivedAt":"2016-08-18T14:24:12Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stephen,\n\nOn Wed, 17 Aug 2016, Stephen Morton wrote:\n\n> > multiple_commits = (todo_list->next) != NULL;\n> > Why not \"last_commit\" instead of \"multiple_commits\"?\n> \n> Because it *isn't*.\n\nPersonally, I do prefer to have the simpler instruction if the commit\nhappens to be the last one cherry-picked.\n\nI do not follow your argument that it makes sense to decide based on the\ntotal number of commits that were to be cherry-picked whether to use the\nmore cumbersome or the easier command.\n\nInstead, I think the user should be given the simplest advice that gets\nthem out of the fix most quickly. And if `git commit --amend` is good\nenough, we should not advise to use `git cherry-pick --continue`, and that\nis that.\n\nCiao,\nJohannes\n"}]}