{"thread":{"id":"17695","subject":"[PATCH] Support \\ in non-wildcard .gitignore entries","startedAt":"2009-02-10T12:11:49Z","lastAt":"2009-02-12T21:03:45Z","messageCount":13,"participants":["Finn Arne Gangstad","Johannes Schindelin","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"103993","messageId":"20090210121149.GA1226@pvv.org","threadId":"17695","inReplyTo":null,"subject":"[PATCH] Support \\ in non-wildcard .gitignore entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-10T12:11:49Z","receivedAt":"2009-02-10T12:11:49Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"If you had an exclude-pattern with a backslash in it, e.g. \"\\#foo\",\nthis would not work, since git would do a strcmp of the exclude pattern\nand the filename. Only wildcard patterns were matched with fnmatch,\nwhich does the right thing with backslashes. We now also treat all patterns\ncontaining backslashes as wildcards.\n\nDe-escaping the pattern while reading the .gitignore file is error prone,\nsince that would break patterns with both backslashes and wildcards.\nE.g. \"\\\\*.c\" would be translated to \"\\*.c\" before fnmatch got it,\nand would change the meaning of the rule dramatically.\n\nSigned-off-by: Finn Arne Gangstad <finnag@pvv.org>\n---\n dir.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/dir.c b/dir.c\nindex cfd1ea5..2245749 100644\n--- a/dir.c\n+++ b/dir.c\n@@ -137,7 +137,7 @@ int match_pathspec(const char **pathspec, const char *name, int namelen,\n \n static int no_wildcard(const char *string)\n {\n-\treturn string[strcspn(string, \"*?[{\")] == '\\0';\n+\treturn string[strcspn(string, \"*?[{\\\\\")] == '\\0';\n }\n \n void add_exclude(const char *string, const char *base,\n-- \n1.6.2.rc0.11.g68cbb.dirty\n"},{"id":"103995","messageId":"alpine.DEB.1.00.0902101354460.10279@pacific.mpi-cbg.de","threadId":"17695","inReplyTo":"20090210121149.GA1226@pvv.org","subject":"Re: [PATCH] Support \\ in non-wildcard .gitignore entries","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-02-10T12:56:36Z","receivedAt":"2009-02-10T12:56:36Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 10 Feb 2009, Finn Arne Gangstad wrote:\n\n> If you had an exclude-pattern with a backslash in it, e.g. \"\\#foo\",\n> this would not work, since git would do a strcmp of the exclude pattern\n> and the filename. Only wildcard patterns were matched with fnmatch,\n> which does the right thing with backslashes. We now also treat all patterns\n> containing backslashes as wildcards.\n> \n> De-escaping the pattern while reading the .gitignore file is error prone,\n> since that would break patterns with both backslashes and wildcards.\n> E.g. \"\\\\*.c\" would be translated to \"\\*.c\" before fnmatch got it,\n> and would change the meaning of the rule dramatically.\n\nI am not sure I understand (maybe a test case would help, but that test \ncase would have to be disabled on Windows, I guess):\n\nYou mean that '\\#abc' would match '\\#abc', but '\\#abc*' would not?\n\nCiao,\nDscho\n"},{"id":"103996","messageId":"20090210125800.GA14800@pvv.org","threadId":"17695","inReplyTo":"alpine.DEB.1.00.0902101354460.10279@pacific.mpi-cbg.de","subject":"Re: [PATCH] Support \\ in non-wildcard .gitignore entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-10T12:58:00Z","receivedAt":"2009-02-10T12:58:00Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"On Tue, Feb 10, 2009 at 01:56:36PM +0100, Johannes Schindelin wrote:\n> Hi,\n> \n> On Tue, 10 Feb 2009, Finn Arne Gangstad wrote:\n> \n> > If you had an exclude-pattern with a backslash in it, e.g. \"\\#foo\",\n> > this would not work, since git would do a strcmp of the exclude pattern\n> > and the filename. Only wildcard patterns were matched with fnmatch,\n> > which does the right thing with backslashes. We now also treat all patterns\n> > containing backslashes as wildcards.\n> > \n> > De-escaping the pattern while reading the .gitignore file is error prone,\n> > since that would break patterns with both backslashes and wildcards.\n> > E.g. \"\\\\*.c\" would be translated to \"\\*.c\" before fnmatch got it,\n> > and would change the meaning of the rule dramatically.\n> \n> I am not sure I understand (maybe a test case would help, but that test \n> case would have to be disabled on Windows, I guess):\n> \n> You mean that '\\#abc' would match '\\#abc', but '\\#abc*' would not?\n\nCurrently, \\#abc does not match a file named #abc, but \\#abc* does.\nWith the patch, both will match.\n\n- Finn Arne\n"},{"id":"104000","messageId":"alpine.DEB.1.00.0902101402230.10279@pacific.mpi-cbg.de","threadId":"17695","inReplyTo":"20090210125800.GA14800@pvv.org","subject":"Re: [PATCH] Support \\ in non-wildcard .gitignore entries","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-02-10T13:02:45Z","receivedAt":"2009-02-10T13:02:45Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 10 Feb 2009, Finn Arne Gangstad wrote:\n\n> On Tue, Feb 10, 2009 at 01:56:36PM +0100, Johannes Schindelin wrote:\n> > Hi,\n> > \n> > On Tue, 10 Feb 2009, Finn Arne Gangstad wrote:\n> > \n> > > If you had an exclude-pattern with a backslash in it, e.g. \"\\#foo\",\n> > > this would not work, since git would do a strcmp of the exclude pattern\n> > > and the filename. Only wildcard patterns were matched with fnmatch,\n> > > which does the right thing with backslashes. We now also treat all patterns\n> > > containing backslashes as wildcards.\n> > > \n> > > De-escaping the pattern while reading the .gitignore file is error prone,\n> > > since that would break patterns with both backslashes and wildcards.\n> > > E.g. \"\\\\*.c\" would be translated to \"\\*.c\" before fnmatch got it,\n> > > and would change the meaning of the rule dramatically.\n> > \n> > I am not sure I understand (maybe a test case would help, but that test \n> > case would have to be disabled on Windows, I guess):\n> > \n> > You mean that '\\#abc' would match '\\#abc', but '\\#abc*' would not?\n> \n> Currently, \\#abc does not match a file named #abc, but \\#abc* does.\n> With the patch, both will match.\n\nAh, so I was wrong, and the test case would not have to be disabled on \nWindows.\n\nThanks,\nDscho\n"},{"id":"104012","messageId":"20090210142017.GA16478@pvv.org","threadId":"17695","inReplyTo":"alpine.DEB.1.00.0902101402230.10279@pacific.mpi-cbg.de","subject":"[PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-10T14:20:17Z","receivedAt":"2009-02-10T14:20:17Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"\"\\\" was treated differently in exclude rules depending on whether a\nwildcard match was done. For wildcard rules, \"\\\" was de-escaped in\nfnmatch, but this was not done for other rules since they used strcmp\ninstead.  A file named \"#foo\" would not be excluded by \"\\#foo\", but would\nbe excluded by \"\\#foo*\".\n\nWe now treat all rules with \"\\\" as wildcard rules.\n\nAnother solution could be to de-escape all non-wildcard rules as we\nread them, but we would have to do the de-escaping exactly as fnmatch\ndoes it to avoid inconsistencies.\n\nSigned-off-by: Finn Arne Gangstad <finnag@pvv.org>\n---\n dir.c                                       |    2 +-\n t/t3003-ls-files-others-escaped-excludes.sh |   37 +++++++++++++++++++++++++++\n 2 files changed, 38 insertions(+), 1 deletions(-)\n create mode 100755 t/t3003-ls-files-others-escaped-excludes.sh\n\ndiff --git a/dir.c b/dir.c\nindex cfd1ea5..2245749 100644\n--- a/dir.c\n+++ b/dir.c\n@@ -137,7 +137,7 @@ int match_pathspec(const char **pathspec, const char *name, int namelen,\n \n static int no_wildcard(const char *string)\n {\n-\treturn string[strcspn(string, \"*?[{\")] == '\\0';\n+\treturn string[strcspn(string, \"*?[{\\\\\")] == '\\0';\n }\n \n void add_exclude(const char *string, const char *base,\ndiff --git a/t/t3003-ls-files-others-escaped-excludes.sh b/t/t3003-ls-files-others-escaped-excludes.sh\nnew file mode 100755\nindex 0000000..bce8741\n--- /dev/null\n+++ b/t/t3003-ls-files-others-escaped-excludes.sh\n@@ -0,0 +1,37 @@\n+#!/bin/sh\n+#\n+# Copyright (c) 2009 Finn Arne Gangstad\n+#\n+\n+test_description='git ls-files --others with escaped excludes\n+\n+This test tests exclusion patterns with \\ in them and makes sure they\n+are treated correctly and identically both for normal and wildcard rules.\n+'\n+\n+. ./test-lib.sh\n+\n+touch \\#ignore1 &&\n+touch \\#ignore2 &&\n+touch \\#hidden &&\n+touch keep\n+\n+echo keep > expect\n+\n+cat >.gitignore <<EOF\n+.gitignore\n+expect\n+output\n+\\#ignore1\n+\\#ignore2*\n+\\#hid*n\n+EOF\n+\n+test_expect_success \\\n+    'git ls-files --others with escaped excludes.' \\\n+    'git ls-files --others \\\n+       --exclude-per-directory=.gitignore \\\n+       >output &&\n+     test_cmp expect output'\n+\n+test_done\n-- \n1.6.2.rc0.11.g665ed\n"},{"id":"104013","messageId":"alpine.DEB.1.00.0902101525380.10279@pacific.mpi-cbg.de","threadId":"17695","inReplyTo":"20090210142017.GA16478@pvv.org","subject":"Re: [PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-02-10T14:27:43Z","receivedAt":"2009-02-10T14:27:43Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 10 Feb 2009, Finn Arne Gangstad wrote:\n\n> \"\\\" was treated differently in exclude rules depending on whether a\n> wildcard match was done. For wildcard rules, \"\\\" was de-escaped in\n> fnmatch, but this was not done for other rules since they used strcmp\n> instead.  A file named \"#foo\" would not be excluded by \"\\#foo\", but would\n> be excluded by \"\\#foo*\".\n> \n> We now treat all rules with \"\\\" as wildcard rules.\n> \n> Another solution could be to de-escape all non-wildcard rules as we\n> read them, but we would have to do the de-escaping exactly as fnmatch\n> does it to avoid inconsistencies.\n> \n> Signed-off-by: Finn Arne Gangstad <finnag@pvv.org>\n> ---\n>  dir.c                                       |    2 +-\n>  t/t3003-ls-files-others-escaped-excludes.sh |   37 +++++++++++++++++++++++++++\n\nThanks, much appreciated!\n\n> diff --git a/t/t3003-ls-files-others-escaped-excludes.sh b/t/t3003-ls-files-others-escaped-excludes.sh\n> new file mode 100755\n> index 0000000..bce8741\n> --- /dev/null\n> +++ b/t/t3003-ls-files-others-escaped-excludes.sh\n> @@ -0,0 +1,37 @@\n> +#!/bin/sh\n> +#\n> +# Copyright (c) 2009 Finn Arne Gangstad\n> +#\n> +\n> +test_description='git ls-files --others with escaped excludes\n> +\n> +This test tests exclusion patterns with \\ in them and makes sure they\n> +are treated correctly and identically both for normal and wildcard rules.\n> +'\n> +\n> +. ./test-lib.sh\n> +\n> +touch \\#ignore1 &&\n\nIn other tests, we avoid 'touch' (IIRC it is not available everywhere or \nsome such), and we write ': > \\#ignore1' instead.\n\nBTW we do not need the # in the name, it could be any letter, right?  \n(Just for my understanding, not as a request to change it.)\n\n> +touch \\#ignore2 &&\n> +touch \\#hidden &&\n> +touch keep\n> +\n> +echo keep > expect\n> +\n> +cat >.gitignore <<EOF\n\nYou probably want to use \\EOF here.\n\n> +.gitignore\n> +expect\n> +output\n> +\\#ignore1\n> +\\#ignore2*\n> +\\#hid*n\n> +EOF\n> +\n> +test_expect_success \\\n> +    'git ls-files --others with escaped excludes.' \\\n> +    'git ls-files --others \\\n> +       --exclude-per-directory=.gitignore \\\n> +       >output &&\n> +     test_cmp expect output'\n> +\n> +test_done\n\nThanks!\nDscho\n"},{"id":"104015","messageId":"20090210143742.GB16478@pvv.org","threadId":"17695","inReplyTo":"alpine.DEB.1.00.0902101525380.10279@pacific.mpi-cbg.de","subject":"Re: [PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-10T14:37:42Z","receivedAt":"2009-02-10T14:37:42Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"On Tue, Feb 10, 2009 at 03:27:43PM +0100, Johannes Schindelin wrote:\n\n> > +\n> > +. ./test-lib.sh\n> > +\n> > +touch \\#ignore1 &&\n> \n> In other tests, we avoid 'touch' (IIRC it is not available everywhere or \n> some such), and we write ': > \\#ignore1' instead.\n\nWill fix it up after seeing if there are some other comments.\n\n> \n> BTW we do not need the # in the name, it could be any letter, right?  \n> (Just for my understanding, not as a request to change it.)\n\nSo far I have only had to use \\ in exclusion rules starting with #,\nsince they would otherwise be interpreted as comments, but it could be\nany character that \\ would not change the meaning of. I am not sure\nwhat fnmatch would do with \\t, \\r and \\n for example.\n\n> > +cat >.gitignore <<EOF\n> \n> You probably want to use \\EOF here.\n\nI am curious, does it matter? Most of the tests use EOF and not \\EOF.\n\n- Finn Arne\n"},{"id":"104023","messageId":"7vab8upb5v.fsf@gitster.siamese.dyndns.org","threadId":"17695","inReplyTo":"20090210143742.GB16478@pvv.org","subject":"Re: [PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-02-10T15:24:44Z","receivedAt":"2009-02-10T15:24:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Finn Arne Gangstad <finnag@pvv.org> writes:\n\n>> > +cat >.gitignore <<EOF\n>> \n>> You probably want to use \\EOF here.\n>\n> I am curious, does it matter? Most of the tests use EOF and not \\EOF.\n\nIf you want the same shell variable expansion and quoting rules as you get\ninside double-quote pair, you would say <<EOF without any quotes.  If you\nquote the EOF, no such substitutions happen.\n\nIn this particular case, you want what you typed there literally in the\nfile, so <<\\EOF would be more correct, even though \\# expands to \\#\nitself.\n\nIOW, your current list of patterns does not happen to have anything like\n$var nor \\\\ that would make a difference, but to protect future breakages\nby people adding more patterns there, it is better to say <<\\EOF when you\nknow you are not asking for any funny expansion to be explicit.\n"},{"id":"104036","messageId":"7v7i3ynt1z.fsf@gitster.siamese.dyndns.org","threadId":"17695","inReplyTo":"7vab8upb5v.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-02-10T16:41:12Z","receivedAt":"2009-02-10T16:41:12Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Finn Arne Gangstad <finnag@pvv.org> writes:\n>\n>>> > +cat >.gitignore <<EOF\n>>> \n>>> You probably want to use \\EOF here.\n>>\n>> I am curious, does it matter? Most of the tests use EOF and not \\EOF.\n>\n> If you want the same shell variable expansion and quoting rules as you get\n> inside double-quote pair, you would say <<EOF without any quotes.  If you\n> quote the EOF, no such substitutions happen.\n>\n> In this particular case, you want what you typed there literally in the\n> file, so <<\\EOF would be more correct, even though \\# expands to \\#\n> itself.\n>\n> IOW, your current list of patterns does not happen to have anything like\n> $var nor \\\\ that would make a difference, but to protect future breakages\n> by people adding more patterns there, it is better to say <<\\EOF when you\n> know you are not asking for any funny expansion to be explicit.\n\nOh, by the way, do we really want to add a new test script?  I am\nwondering why the test is not an update to an existing test for the\nexclusion feature, such as t/t3001-ls-files-others-exclude.sh\n"},{"id":"104048","messageId":"20090210172318.GA11384@pvv.org","threadId":"17695","inReplyTo":"7v7i3ynt1z.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH v2] Support \"\\\" in non-wildcard exclusion entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-10T17:23:19Z","receivedAt":"2009-02-10T17:23:19Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"On Tue, Feb 10, 2009 at 08:41:12AM -0800, Junio C Hamano wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> Oh, by the way, do we really want to add a new test script?  I am\n> wondering why the test is not an update to an existing test for the\n> exclusion feature, such as t/t3001-ls-files-others-exclude.sh\n\nI really did not want to add a new test script, but extending 3001\nwith this test seemed to make the test slightly more opaque. I can try\nadding it to 3001 and see what it ends up looking like.\n\n- Finn Arne\n"},{"id":"104359","messageId":"20090212093250.GA9623@pvv.org","threadId":"17695","inReplyTo":"7v7i3ynt1z.fsf@gitster.siamese.dyndns.org","subject":"[PATCH v3] Support \"\\\" in non-wildcard exclusion entries","fromName":"Finn Arne Gangstad","fromEmail":"finnag@pvv.org","sentAt":"2009-02-12T09:32:50Z","receivedAt":"2009-02-12T09:32:50Z","isPatch":true,"sender":{"key":"finnag@pvv.org","avatar":"https://gravatar.com/avatar/b421ddd58c3f0f93aa473e17b98bb8d53c221fef741746bc8cb59fae4ec6d95e?d=mp&s=160"},"body":"On Tue, Feb 10, 2009 at 08:41:12AM -0800, Junio C Hamano wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> Oh, by the way, do we really want to add a new test script?  I am\n> wondering why the test is not an update to an existing test for the\n> exclusion feature, such as t/t3001-ls-files-others-exclude.sh\n\nOk, here is the final version with your suggested test-modification,\nwhich seems to to the trick!\n\n- Finn Arne\n\n--8<--\nSupport \"\\\" in non-wildcard exclusion entries\n\n\"\\\" was treated differently in exclude rules depending on whether a\nwildcard match was done. For wildcard rules, \"\\\" was de-escaped in\nfnmatch, but this was not done for other rules since they used strcmp\ninstead.  A file named \"#foo\" would not be excluded by \"\\#foo\", but would\nbe excluded by \"\\#foo*\".\n\nWe now treat all rules with \"\\\" as wildcard rules.\n\nAnother solution could be to de-escape all non-wildcard rules as we\nread them, but we would have to do the de-escaping exactly as fnmatch\ndoes it to avoid inconsistencies.\n\nSigned-off-by: Finn Arne Gangstad <finnag@pvv.org>\n---\n dir.c                              |    2 +-\n t/t3001-ls-files-others-exclude.sh |    7 +++++++\n 2 files changed, 8 insertions(+), 1 deletions(-)\n\ndiff --git a/dir.c b/dir.c\nindex cfd1ea5..2245749 100644\n--- a/dir.c\n+++ b/dir.c\n@@ -137,7 +137,7 @@ int match_pathspec(const char **pathspec, const char *name, int namelen,\n \n static int no_wildcard(const char *string)\n {\n-\treturn string[strcspn(string, \"*?[{\")] == '\\0';\n+\treturn string[strcspn(string, \"*?[{\\\\\")] == '\\0';\n }\n \n void add_exclude(const char *string, const char *base,\ndiff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh\nindex 85aef12..9be9557 100755\n--- a/t/t3001-ls-files-others-exclude.sh\n+++ b/t/t3001-ls-files-others-exclude.sh\n@@ -19,6 +19,9 @@ do\n     >$dir/a.$i\n   done\n done\n+>\"#ignore1\"\n+>\"#ignore2\"\n+>\"#hidden\"\n \n cat >expect <<EOF\n a.2\n@@ -42,6 +45,9 @@ three/a.8\n EOF\n \n echo '.gitignore\n+\\#ignore1\n+\\#ignore2*\n+\\#hid*n\n output\n expect\n .gitignore\n@@ -82,6 +88,7 @@ test_expect_success \\\n cat > excludes-file << EOF\n *.[1-8]\n e*\n+\\#*\n EOF\n \n git config core.excludesFile excludes-file\n-- \n1.6.2.rc0.11.g665ed\n"},{"id":"104366","messageId":"alpine.DEB.1.00.0902121143560.10279@pacific.mpi-cbg.de","threadId":"17695","inReplyTo":"20090212093250.GA9623@pvv.org","subject":"Re: [PATCH v3] Support \"\\\" in non-wildcard exclusion entries","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-02-12T10:44:24Z","receivedAt":"2009-02-12T10:44:24Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 12 Feb 2009, Finn Arne Gangstad wrote:\n\n> @@ -82,6 +88,7 @@ test_expect_success \\\n>  cat > excludes-file << EOF\n>  *.[1-8]\n>  e*\n> +\\#*\n>  EOF\n\nYou addressed all comments, except the \\EOF comment, I guess.\n\nThanks,\nDscho\n"},{"id":"104421","messageId":"7v7i3vl64u.fsf@gitster.siamese.dyndns.org","threadId":"17695","inReplyTo":"alpine.DEB.1.00.0902121143560.10279@pacific.mpi-cbg.de","subject":"Re: [PATCH v3] Support \"\\\" in non-wildcard exclusion entries","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-02-12T21:03:45Z","receivedAt":"2009-02-12T21:03:45Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> Hi,\n>\n> On Thu, 12 Feb 2009, Finn Arne Gangstad wrote:\n>\n>> @@ -82,6 +88,7 @@ test_expect_success \\\n>>  cat > excludes-file << EOF\n>>  *.[1-8]\n>>  e*\n>> +\\#*\n>>  EOF\n>\n> You addressed all comments, except the \\EOF comment, I guess.\n\nThanks; I'll amend the one queued in 'pu' for the last few days, which\nmatches this round.\n"}]}