{"thread":{"id":"36566","subject":"#178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","startedAt":"2014-05-02T11:50:25Z","lastAt":"2014-05-05T23:02:34Z","messageCount":8,"participants":["Dave Bradley","Erik Faye-Lund","Junio C Hamano","Jonathan Nieder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"240523","messageId":"BLU0-SMTP1116609FAC7E0C76123F929F430@phx.gbl","threadId":"36566","inReplyTo":null,"subject":"#178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Dave Bradley","fromEmail":"dbradley2@bell.net","sentAt":"2014-05-02T11:50:25Z","receivedAt":"2014-05-02T11:50:25Z","isPatch":false,"sender":{"key":"dbradley2@bell.net","avatar":null},"body":"Hi,\n\nI’m very new to ‘git’ github. I reported the #178 issue in github and the \nissue has been closed, I believe this means no further discussion.\n\nThere are a three additional comments, thank you to the contributors. The \nadvise was to discuss upstream which meant nothing to me (again thanks to \nanother contributor for clarification).\n\nSummary\n------------\nThe issue reported is (in my opinion) a defect in argument processing \n(happens on Windows and Linux (as per another contributor)).\n\nThe issue (in my opinion) is a defect for argument processing by Git. The \ndecision (agreement or otherwise) I guess is for this upstream discussion.\n\nI appreciate the open-source git and its usage to the community. But this is \nowned by the discussion group and I doubt my involvement is wanted. So this \nwill be my last communication on this issue.\n\nContext\n----------\nOver many years, I’ve used command-line on Unix/Linux/Windows in both hobby \nand professional modes. In the latter case the processing of arguments with \nspaces has often been the cause of defects (none expected behaviour) for \nnewly introduced products.\n\nI’ve found no documentation about the pretty=format behaviour as described \nby the #178 issue. Also, there are many (but incomplete) google-it \nsecond-hand documents(?) about. So a document fix in the internet age is not \nnecessarily the approach to solve an issue, as all those google-it items \ncreate fog.\n\nFor this issue I was processing a git command to run in a GUI and happened \nupon it. The GUI (original design by me) allows interfacing with CVS, SVN, \nHG and maybe now GIT in a similar manner. The GUI holds the interfacing and \naccess information and concatenates it onto the VCS command/sub-commands as \nappropriate for a request. Thus, the concatenated VCS request may be \nprocessed for copy-paste onto a command line window/terminal or (for my GUI) \nexecuted via a programming language’s command-line-execution class/function \n(Perl, Java, C,.....).\n\nWith the argument being further processed within git, it behaves in a manner \nthat wasn’t expected.\n\n\nThx\nDave\n\nthe Issue as reported\n\n\nGetting a fatal failure when using the following --pretty=format:\"%an %ad\" \nvia a programmed execution from within a programming language. (Java using \nthe execution capabilities puts the ' --pretty=format:\"%an %ad\" ' as an \nargument). This is reproduced on a Windows command-line entry by putting \ndouble-quotes around the argument. (see below for various examples of pass, \nfail and testing around).\n\nThe git argument parser appears to perform a split on spaces within the \narguments passed to it also. This is not a normal behaviour for any parsing. \nAlso, the split is happening within a string quote, it would appear (\"%an \n%ad\").\nEven tried %20 to represent the space.\n\nThx\n\nG:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git \nlog --all --pretty=format:\"%an %ad\" -- pom.xml\nxxxx xxxx Mon Nov 23 03:09:17 2009 +0000\nxxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n\nG:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n\"--pretty=format:\"%an %ad\"\" -- pom.xml\nfatal: bad revision '%ad'\n\nG:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n\"--pretty=format:\"%an\" \"%ad\"\" -- pom.xml\nxxxx xxxx Mon Nov 23 03:09:17 2009 +0000\nxxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n\nG:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n\"--pretty=format:\"%an\" \" %ad\"\" -- pom.xml\nfatal: bad revision '%ad'\n\nG:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n\"--pretty=format:\"%an\" \"%ad\"\" -- pom.xml\nxxxx xxxx Mon Nov 23 03:09:17 2009 +0000\nxxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n"},{"id":"240524","messageId":"CABPQNSa6PaTZ3coX2eU-r7BFH3JR2V6XHv4HbXxsYyxv0qA71Q@mail.gmail.com","threadId":"36566","inReplyTo":"BLU0-SMTP1116609FAC7E0C76123F929F430@phx.gbl","subject":"Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@gmail.com","sentAt":"2014-05-02T12:12:59Z","receivedAt":"2014-05-02T12:12:59Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Fri, May 2, 2014 at 1:50 PM, Dave Bradley <dbradley2@bell.net> wrote:\n> Hi,\n>\n> I’m very new to ‘git’ github. I reported the #178 issue in github and the\n> issue has been closed, I believe this means no further discussion.\n\nWhen you say \"the #178 issue in github\", you really mean \"issue #178\nfor Git for Windows on GitHub\", available at\nhttps://github.com/msysgit/git/issues/178 for those interested.\n\nThat issue tracker is for the Windows port of Git for Windows. It's\nintended to track breakages in Git for Windows compared to Git on, say\nLinux. It's not a general issue tracker for problems with Git. Still,\nit seems a lot of people think \"I downloaded Git for Windows, and\nhere's something that didn't work the way I expected it to, I'll file\na bug\". Those kinds of bug-reports usually gets closed quickly, as\nit's outside the scope of Git for Windows to decide how Git should\nbehave - we try to make it behave consistently between Windows and\nUnixy-platforms.\n\nThis is indeed the right forum to address your issue. So thank you for\nmoving the discussion here.\n"},{"id":"240536","messageId":"xmqqsiosayl9.fsf@gitster.dls.corp.google.com","threadId":"36566","inReplyTo":"CABPQNSa6PaTZ3coX2eU-r7BFH3JR2V6XHv4HbXxsYyxv0qA71Q@mail.gmail.com","subject":"Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-05-02T17:18:26Z","receivedAt":"2014-05-02T17:18:26Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Erik Faye-Lund <kusmabite@gmail.com> writes:\n\n> On Fri, May 2, 2014 at 1:50 PM, Dave Bradley <dbradley2@bell.net> wrote:\n>> Hi,\n>>\n>> I’m very new to ‘git’ github. I reported the #178 issue in github and the\n>> issue has been closed, I believe this means no further discussion.\n>\n> When you say \"the #178 issue in github\", you really mean \"issue #178\n> for Git for Windows on GitHub\", available at\n> https://github.com/msysgit/git/issues/178 for those interested.\n>\n> That issue tracker is for the Windows port of Git for Windows. It's\n> intended to track breakages in Git for Windows compared to Git on, say\n> Linux. It's not a general issue tracker for problems with Git. Still,\n> it seems a lot of people think \"I downloaded Git for Windows, and\n> here's something that didn't work the way I expected it to, I'll file\n> a bug\". Those kinds of bug-reports usually gets closed quickly, as\n> it's outside the scope of Git for Windows to decide how Git should\n> behave - we try to make it behave consistently between Windows and\n> Unixy-platforms.\n>\n> This is indeed the right forum to address your issue. So thank you for\n> moving the discussion here.\n\nHmmmmmm, everything you said in the earlier paragraphs is correct,\nbut I am having a feeling that this is either an issue specific to\nthe Windows port, or more likely a user error, depending on who is\ngiving the extra dq quoting.  From the command line:\n\n    $ git show --pretty='format:\"%an %ad\"'\n    \"Junio C Hamano Wed Apr 30 11:01:42 2014 -0700\"\n\nBecause the 'format:' specifier requests to put dq around these two,\nwe respond by putting dq around these two, just as we were asked to\ndo.  The way to ask %an followed by SP followed by %ad and nothing\nelse is\n\n    $ git show --pretty='format:%an %ad'\n    Junio C Hamano Wed Apr 30 11:01:42 2014 -0700\n\nEspecially this part from the original tells me that this is a user\nerror and there is nothing wrong in either the generic Git or in the\nWindows port.\n\n    G:\\w....x>git log --all \"--pretty=format:\"%an %ad\"\" -- pom.xml\n    fatal: bad revision '%ad'\n\nSeparating the tokens on that command line, we would get:\n\n    git\n    log\n    --all\n    --pretty=format:%an\n    %ad\n    --\n    pom.xml\n\nSo it told git to run the log subcommand with arguments that tells\nit to \"include all tips of refs to the starting set\", \"show them\nusing a custom format %an\", \"include %ad to the starting set\",\n\"everything that follows are not revs but pathspecs\", and then\nfinally \"pom.xml is the pathspec to limit to paths the user is\ninterested in\".  \"%ad is not a rev\" is perfectly valid.\n\n\nYou cannot take --pretty=format:\"%ad %an\" that you see in tutorials\nand random web pages too literally.  The double quotes you see in\nthat example is our way to tell that \"--pretty=format:%ad %an\" (what\nis inside these dq) is expected to be fed to Git as a single\nargument.\n\nThe examples you see typically follow the convention to show what\nyou _would_ give to shell to achieve that, and shell's command line\nparser needs these dq to make sure that the SP between %an and %ad\nis not taken as an argument separator.\n\nYour custom front-end may take a different approach to let you\nspecify what individual arguments are on your command line, and you\nwould have to follow its convention.  The user needs to be careful\nabout how shell quoting works on his/her command line, and that is\nall, I would think.\n\nVisiting an earlier part of the original issue report:\n\n    Getting a fatal failure when using the following\n    --pretty=format:\"%an %ad\" via a programmed execution from within\n    a programming language. (Java using the execution capabilities\n    puts the ' --pretty=format:\"%an %ad\" ' as an argument).\n\nI take that \"Java using ...\" to mean that the user wants to see his\nmachinery eventually do an equivalent to:\n\n\texecl('git', 'git', 'log', '--pretty=format:%an %ad', ...);\n\nbut it somehow is getting\n\n\texecl('git', 'git', 'log', '--pretty=format:%an', '%ad', ...);\n\ndue to reason unknown to us that is not in the report.\n\nWithout knowing what the end-user input to the front-end that calls\ninto that \"Java\" machinery is and what the argument separating\nconvention that is employed by the front-end is, I cannot tell where\nthe single argument is split into two.  The problem may either be in\nthat front-end program and not in the end-user input.  Or the\nproblem may be in Windows port letting the Windows library split\ncommand line at a funny point.  In any case, it does not sound like\nit is a problem in Git.  If the command fed to the equivalent to\nexecl() above were not 'git' but any program, it will suffer from\nthe same issue.\n"},{"id":"240537","messageId":"20140502172256.GH9218@google.com","threadId":"36566","inReplyTo":"BLU0-SMTP1116609FAC7E0C76123F929F430@phx.gbl","subject":"Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2014-05-02T17:22:56Z","receivedAt":"2014-05-02T17:22:56Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi Dave,\n\nDave Bradley wrote:\n\n> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all --pretty=format:\"%an %ad\" -- pom.xml\n> xxxx xxxx Mon Nov 23 03:09:17 2009 +0000\n> xxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n>\n> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \"--pretty=format:\"%an %ad\"\" -- pom.xml\n> fatal: bad revision '%ad'\n\nOn Linux, this example gets passed to git as six arguments:\n\n\tlog\n\t--all\n\t--pretty=format:%an\n\t%ad\n\t--\n\tpom.xml\n\nI think the intent was instead to pass five arguments (the third being\n'--pretty=format:%an %ad').  That means you shouldn't unquote before\nthe space, or in other words that the space should be part of a quoted\nargument.\n\nOn Windows, I believe the argument passing convention is more\ncomplicated.  Programs can inspect the entire command line if they\nwant to.  But there's still an ambiguity in the command you passed: if\nI look at space-separated or double-quoted parts of the command line,\nit looks like\n\n\tgit\n\tlog\n\t--all\n\t\"--pretty=format:\"\n\t(no space)\n\t%an\n\t%ad\n\t(no space)\n\t\"\"\n\t--\n\tpom.xml\n\nWhat's the right way to parse this?  How can git tell whether %an %ad\nwere meant to be separate arguments or not?  In absence of a stronger\nconvention I suspect the simplest rule is to mimic what a Unix shell\ndoes, where they are separate arguments because the space is not\nquoted.\n\nCc-ing Windows folks in case they have more insight.\n\nThanks and hope that helps,\nJonathan\n"},{"id":"240538","messageId":"20140502172358.GI9218@google.com","threadId":"36566","inReplyTo":"BLU0-SMTP1116609FAC7E0C76123F929F430@phx.gbl","subject":"Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2014-05-02T17:23:58Z","receivedAt":"2014-05-02T17:23:58Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"(resending with the correct address for the Git for Windows developers.\nSorry for the noise.)\nHi Dave,\n\nDave Bradley wrote:\n\n> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all --pretty=format:\"%an %ad\" -- pom.xml\n> xxxx xxxx Mon Nov 23 03:09:17 2009 +0000\n> xxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n>\n> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \"--pretty=format:\"%an %ad\"\" -- pom.xml\n> fatal: bad revision '%ad'\n\nOn Linux, this example gets passed to git as six arguments:\n\n\tlog\n\t--all\n\t--pretty=format:%an\n\t%ad\n\t--\n\tpom.xml\n\nI think the intent was instead to pass five arguments (the third being\n'--pretty=format:%an %ad').  That means you shouldn't unquote before\nthe space, or in other words that the space should be part of a quoted\nargument.\n\nOn Windows, I believe the argument passing convention is more\ncomplicated.  Programs can inspect the entire command line if they\nwant to.  But there's still an ambiguity in the command you passed: if\nI look at space-separated or double-quoted parts of the command line,\nit looks like\n\n\tgit\n\tlog\n\t--all\n\t\"--pretty=format:\"\n\t(no space)\n\t%an\n\t%ad\n\t(no space)\n\t\"\"\n\t--\n\tpom.xml\n\nWhat's the right way to parse this?  How can git tell whether %an %ad\nwere meant to be separate arguments or not?  In absence of a stronger\nconvention I suspect the simplest rule is to mimic what a Unix shell\ndoes, where they are separate arguments because the space is not\nquoted.\n\nCc-ing Windows folks in case they have more insight.\n\nThanks and hope that helps,\nJonathan\n\n-- \n-- \n*** Please reply-to-all at all times ***\n*** (do not pretend to know who is subscribed and who is not) ***\n*** Please avoid top-posting. ***\nThe msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.\n\nYou received this message because you are subscribed to the Google\nGroups \"msysGit\" group.\nTo post to this group, send email to msysgit@googlegroups.com\nTo unsubscribe from this group, send email to\nmsysgit+unsubscribe@googlegroups.com\nFor more options, and view previous threads, visit this group at\nhttp://groups.google.com/group/msysgit?hl=en_US?hl=en\n\n--- \nYou received this message because you are subscribed to the Google Groups \"msysGit\" group.\nTo unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.\nFor more options, visit https://groups.google.com/d/optout.\n"},{"id":"240541","messageId":"CABPQNSYTWYwSgd=sa0QGmaFDuzprLzLNYmQEx-6MrZ_HEZimww@mail.gmail.com","threadId":"36566","inReplyTo":"20140502172358.GI9218@google.com","subject":"Re: Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@gmail.com","sentAt":"2014-05-02T18:23:56Z","receivedAt":"2014-05-02T18:23:56Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Fri, May 2, 2014 at 7:23 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> (resending with the correct address for the Git for Windows developers.\n> Sorry for the noise.)\n> Hi Dave,\n>\n> Dave Bradley wrote:\n>\n>> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all --pretty=format:\"%an %ad\" -- pom.xml\n>> xxxx xxxx Mon Nov 23 03:09:17 2009 +0000\n>> xxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n>>\n>> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \"--pretty=format:\"%an %ad\"\" -- pom.xml\n>> fatal: bad revision '%ad'\n>\n> On Linux, this example gets passed to git as six arguments:\n>\n>         log\n>         --all\n>         --pretty=format:%an\n>         %ad\n>         --\n>         pom.xml\n>\n\nAs does it on Windows.\n\n-- \n-- \n*** Please reply-to-all at all times ***\n*** (do not pretend to know who is subscribed and who is not) ***\n*** Please avoid top-posting. ***\nThe msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.\n\nYou received this message because you are subscribed to the Google\nGroups \"msysGit\" group.\nTo post to this group, send email to msysgit@googlegroups.com\nTo unsubscribe from this group, send email to\nmsysgit+unsubscribe@googlegroups.com\nFor more options, and view previous threads, visit this group at\nhttp://groups.google.com/group/msysgit?hl=en_US?hl=en\n\n--- \nYou received this message because you are subscribed to the Google Groups \"msysGit\" group.\nTo unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.\nFor more options, visit https://groups.google.com/d/optout.\n"},{"id":"240678","messageId":"BLU0-SMTP387BC836A8719897DD84B79F4D0@phx.gbl","threadId":"36566","inReplyTo":"CABPQNSYTWYwSgd=sa0QGmaFDuzprLzLNYmQEx-6MrZ_HEZimww@mail.gmail.com","subject":"Re: [msysGit] Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Dave Bradley","fromEmail":"dbradley2@bell.net","sentAt":"2014-05-04T10:14:13Z","receivedAt":"2014-05-04T10:14:13Z","isPatch":false,"sender":{"key":"dbradley2@bell.net","avatar":null},"body":"Hi,\n\nInteresting discussion. However, the example below of three-spaces between \n\"%an\"  and \"%ad\" in the example below resulted in the\nformatting of the output with the three spaces,  but no dq's.\n\n> Original #178 content\n>G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n>\"--pretty=format:\"%an\"    \"%ad\"\" -- pom.xml\n>xxxx xxxx    Mon Nov 23 03:09:17 2009 +0000\n>xxxx xxxx    Mon Nov 23 02:42:24 2009 +0000\n\nThis added to my confusion as by right dq within dq should be formatted. \n(Yea right, these days its needs to be escaped. But haven't tried that.)\n\nIn summary so far, it would appear that the --pretty......... needs to be \ncontained in double-quotes as a whole. This was the solution I applied to my \nproblem.\n\nIn the discussions I've seen more information requested as to the arguments \nprovided to the execution class. I solved this issue as I made it work by \nexperiment. I format the argument as a whole and don't have the space. IE. \n\"pretty=format:\"name:%an%nauthor:%ad%n\"\".\n\n\nRegards\n\n-----Original Message----- \nFrom: Erik Faye-Lund\nSent: Friday, May 02, 2014 2:23 PM\nTo: Jonathan Nieder\nCc: Dave Bradley ; GIT Mailing-list ; msysGit\nSubject: Re: [msysGit] Re: #178 parsing of pretty=format:\"%an %ad\" causes \nfatal: bad revision '%ad'\n\nOn Fri, May 2, 2014 at 7:23 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> (resending with the correct address for the Git for Windows developers.\n> Sorry for the noise.)\n> Hi Dave,\n>\n> Dave Bradley wrote:\n>\n>> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git \n>> log --all --pretty=format:\"%an %ad\" -- pom.xml\n>> xxxx xxxx Mon Nov 23 03:09:17 2009 +0000\n>> xxxx xxxx Mon Nov 23 02:42:24 2009 +0000\n>>\n>> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all \n>> \"--pretty=format:\"%an %ad\"\" -- pom.xml\n>> fatal: bad revision '%ad'\n>\n> On Linux, this example gets passed to git as six arguments:\n>\n>         log\n>         --all\n>         --pretty=format:%an\n>         %ad\n>         --\n>         pom.xml\n>\n\nAs does it on Windows. \n"},{"id":"240767","messageId":"xmqqtx9396d1.fsf@gitster.dls.corp.google.com","threadId":"36566","inReplyTo":"BLU0-SMTP387BC836A8719897DD84B79F4D0@phx.gbl","subject":"Re: [msysGit] Re: #178 parsing of pretty=format:\"%an %ad\" causes fatal: bad revision '%ad'","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-05-05T23:02:34Z","receivedAt":"2014-05-05T23:02:34Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Dave Bradley <dbradley2@bell.net> writes:\n\n>> Original #178 content\n>> G:\\ws_test_env\\GIT_TESTBED_TMP\\fest-swing-1.x>git log --all\n>> \"--pretty=format:\"%an\"    \"%ad\"\" -- pom.xml\n>>xxxx xxxx    Mon Nov 23 03:09:17 2009 +0000\n>>xxxx xxxx    Mon Nov 23 02:42:24 2009 +0000\n>\n> This added to my confusion as by right dq within dq should be\n> formatted.\n\nI do not see any dq within dq here.  Perhaps you need to count again\nto see which one pairs with which one.\n\nWhat I see are these three strings concatenated together:\n\n        --pretty=format: (which does not need any dq)\n        %an\"   \"%ad     (the dq protects 3 SPs inside)\n                        (an empty string inside the final dq pair)\n\nSo the single parameter that begins with --pretty given to \"git log\"\nis exactly the same as what is inside the single dq pair in the\nfollowing:\n\n\t\"--pretty=format:%an   %ad\"\n\nA more conventional way to spell it may however be one of:\n\n\t--pretty=format:\"%an   %ad\"\n\t--pretty=\"format:%an   %ad\"\n"}]}