{"thread":{"id":"724","subject":"[PATCH Cogito] Fix cg-log -f behavior","startedAt":"2005-05-26T20:03:46Z","lastAt":"2005-05-26T22:13:17Z","messageCount":7,"participants":["Marcel Holtmann","Junio C Hamano","Linus Torvalds"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"3994","messageId":"1117137826.12036.57.camel@pegasus","threadId":"724","inReplyTo":null,"subject":"[PATCH Cogito] Fix cg-log -f behavior","fromName":"Marcel Holtmann","fromEmail":"marcel@holtmann.org","sentAt":"2005-05-26T20:03:46Z","receivedAt":"2005-05-26T20:03:46Z","isPatch":true,"sender":{"key":"marcel@holtmann.org","avatar":null},"body":"Hi Petr,\n\nthe attached patch fixes the wrong behavior when calling cg-log -f. The\noutput format of git-diff-tree has changed and so we need to adapt to\nthat to be able to show the file list again.\n\nRegards\n\nMarcel\n\n\nSigned-off-by: Marcel Holtmann <marcel@holtmann.org>\n\n\n\nIndex: cg-log\n===================================================================\n--- afc7419cdf2909781fa5dd9d57ea90738e515126/cg-log  (mode:100755)\n+++ uncommitted/cg-log  (mode:100755)\n@@ -78,7 +78,7 @@\n \t\tlist_cmd=\"git-diff-tree -r $tree1 $tree2\"\n \tfi\n \techo\n-\t$list_cmd | while read modes type sha1s file; do\n+\t$list_cmd | while read mode1 mode2 sha1a sha1b status file; do\n \t\techo -n \"$sep\"\n \t\tsep=\", \"\n \t\tif [ $(echo \"$line$sep$file\" | wc -c) -le 75 ]; then\n"},{"id":"3995","messageId":"7vk6llbv1j.fsf@assigned-by-dhcp.cox.net","threadId":"724","inReplyTo":"1117137826.12036.57.camel@pegasus","subject":"Re: [PATCH Cogito] Fix cg-log -f behavior","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-26T20:18:32Z","receivedAt":"2005-05-26T20:18:32Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Doesn't that still break one-tree case (i.e. [ -z $tree2 ])?\n\n\n"},{"id":"3998","messageId":"1117139740.12036.59.camel@pegasus","threadId":"724","inReplyTo":"7vk6llbv1j.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH Cogito] Fix cg-log -f behavior","fromName":"Marcel Holtmann","fromEmail":"marcel@holtmann.org","sentAt":"2005-05-26T20:35:40Z","receivedAt":"2005-05-26T20:35:40Z","isPatch":true,"sender":{"key":"marcel@holtmann.org","avatar":null},"body":"Hi Junio,\n\n> Doesn't that still break one-tree case (i.e. [ -z $tree2 ])?\n\nI am not sure, because I never tried it. Does it use a different format?\n\nRegards\n\nMarcel\n\n\n"},{"id":"4002","messageId":"7voeaxae0r.fsf@assigned-by-dhcp.cox.net","threadId":"724","inReplyTo":"1117139740.12036.59.camel@pegasus","subject":"Re: [PATCH Cogito] Fix cg-log -f behavior","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-26T21:11:32Z","receivedAt":"2005-05-26T21:11:32Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"MH\" == Marcel Holtmann <marcel@holtmann.org> writes:\n\nMH> Hi Junio,\n\n>> Doesn't that still break one-tree case (i.e. [ -z $tree2 ])?\n\nMH> I am not sure, because I never tried it. Does it use a different format?\n\nI am not a Cogito user, but I am a bit wondering if you have\nread what is around what you are modifying.\n\n\t# List all files for for the initial commit\n\tif [ -z $tree2 ]; then\n\t\tlist_cmd=\"git-ls-tree $tree1\"\n\telse\n\t\tlist_cmd=\"git-diff-tree -r $tree1 $tree2\"\n\tfi\n\techo\n\t$list_cmd | while read modes type sha1s file; do\n\nThe code you changed is fed by either git-ls-tree or\ngit-diff-tree, depending on whether you are talking about\ninitial commit.  git-ls-tree gives \"mode type sha1 file\".\n\nThis is why I asked Linus about a slight format change for\ngit-ls-tree (and git-ls-files) this morning.\n\nCurrently, there are three incompatible format floating around.\n\n  - diff-* brothers show the metadata (separated internally with\n    SP), TAB, and path.  If it is a rename diff, another TAB and\n    path follow them.\n\n  - ls-tree gives everything with TAB separated.\n\n  - ls-files gives everything with SP separated.\n\nThe suggestion I made this morning is to make ls-tree and\nls-files use SP inside metadata and TAB before path.  If we\ncan agree on that is the way to go, then the output from these\ncommands would become:\n\n  - diff-* brothers:\n\n    mode SP mode SP sha1 SP sha1 SP status TAB path [ TAB path ]\n\n  - ls-tree:\n\n    mode SP kind SP sha1 TAB path\n\n  - ls-files --stage :\n\n    mode SP sha1 SP stage TAB path\n\nWhat this means is the above piece of code can now be rewritten\nto parse with something like this, and it does not matter what\ncommand you have upstream:\n\n\techo\n\t# List all files for for the initial commit\n\tif [ -z $tree2 ]; then\n        \tgit-ls-tree \"$tree1\"\n\telse\n\t\tgit-diff-tree -r \"$tree1\" \"$tree2\"\n\tfi |\n        cut -f2 |\n\twhile read file; do\n            ...\n\nNote that the above code is totally untested.  I do not use\n\"cut\" myself and I am writing this in my e-mail buffer.\n\n\n\n\n"},{"id":"4003","messageId":"1117142741.12036.66.camel@pegasus","threadId":"724","inReplyTo":"7voeaxae0r.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH Cogito] Fix cg-log -f behavior","fromName":"Marcel Holtmann","fromEmail":"marcel@holtmann.org","sentAt":"2005-05-26T21:25:40Z","receivedAt":"2005-05-26T21:25:40Z","isPatch":true,"sender":{"key":"marcel@holtmann.org","avatar":null},"body":"Hi Junio,\n\n> MH> I am not sure, because I never tried it. Does it use a different format?\n> \n> I am not a Cogito user, but I am a bit wondering if you have\n> read what is around what you are modifying.\n> \n> \t# List all files for for the initial commit\n> \tif [ -z $tree2 ]; then\n> \t\tlist_cmd=\"git-ls-tree $tree1\"\n> \telse\n> \t\tlist_cmd=\"git-diff-tree -r $tree1 $tree2\"\n> \tfi\n> \techo\n> \t$list_cmd | while read modes type sha1s file; do\n> \n> The code you changed is fed by either git-ls-tree or\n> git-diff-tree, depending on whether you are talking about\n> initial commit.  git-ls-tree gives \"mode type sha1 file\".\n\nI assumed that both have the same output format.\n\n> This is why I asked Linus about a slight format change for\n> git-ls-tree (and git-ls-files) this morning.\n\nTo what is it changing?\n\nRegards\n\nMarcel\n\n\n"},{"id":"4005","messageId":"7v8y21acs4.fsf_-_@assigned-by-dhcp.cox.net","threadId":"724","inReplyTo":"1117142741.12036.66.camel@pegasus","subject":"[PATCH Cogito] Make ls-* output consistent with diff-* output format.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-26T21:38:19Z","receivedAt":"2005-05-26T21:38:19Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"MH\" == Marcel Holtmann <marcel@holtmann.org> writes:\n\n>> This is why I asked Linus about a slight format change for\n>> git-ls-tree (and git-ls-files) this morning.\n\nMH> To what is it changing?\n\nLinus, we await your decree ;-).\n\nTo save your time reading backissues of the thread, here is the\nsummary of the problem this patch addresses:\n\n    This is why I asked Linus about a slight format change for\n    git-ls-tree (and git-ls-files) this morning.\n\n    Currently, there are three incompatible format floating around.\n\n      - diff-* brothers show the metadata (separated internally with\n        SP), TAB, and path.  If it is a rename diff, another TAB and\n        path follow them.\n\n      - ls-tree gives everything with TAB separated.\n\n      - ls-files gives everything with SP separated.\n\n    The suggestion I made this morning is to make ls-tree and\n    ls-files use SP inside metadata and TAB before path.  If we\n    can agree on that is the way to go, then the output from these\n    commands would become:\n\n      - diff-* brothers:\n\n        mode SP mode SP sha1 SP sha1 SP status TAB path [ TAB path ]\n\n      - ls-tree:\n\n        mode SP kind SP sha1 TAB path\n\n      - ls-files --stage :\n\n        mode SP sha1 SP stage TAB path\n\n    What this means is the above piece of code can now be rewritten\n    to parse with something like this, and it does not matter what\n    command you have upstream:\n\n            echo\n            # List all files for for the initial commit\n            if [ -z $tree2 ]; then\n                    git-ls-tree \"$tree1\"\n            else\n                    git-diff-tree -r \"$tree1\" \"$tree2\"\n            fi |\n            cut -f2 |\n            while read file; do\n                ...\n\n    Note that the above code is totally untested.  I do not use\n    \"cut\" myself and I am writing this in my e-mail buffer.\n\n------------\nUse SP as the column separator except the ones before path which\nuses TAB, to make the output format consistent across ls-* and\ndiff-* commands.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n\nls-files.c                  |    2 \nls-tree.c                   |    2 \nt/t0000-basic.sh            |   46 ++++++++++----------\nt/t1000-read-tree-m-3way.sh |   98 ++++++++++++++++++++++----------------------\nt/t3100-ls-tree-restrict.sh |   40 ++++++++---------\n5 files changed, 94 insertions(+), 94 deletions(-)\n\ndiff --git a/ls-files.c b/ls-files.c\n--- a/ls-files.c\n+++ b/ls-files.c\n@@ -262,7 +262,7 @@ static void show_files(void)\n \t\t\t\t       tag_cached,\n \t\t\t\t       ce->name, line_terminator);\n \t\t\telse\n-\t\t\t\tprintf(\"%s%06o %s %d %s%c\",\n+\t\t\t\tprintf(\"%s%06o %s %d\\t%s%c\",\n \t\t\t\t       ce_stage(ce) ? tag_unmerged :\n \t\t\t\t       tag_cached,\n \t\t\t\t       ntohl(ce->ce_mode),\ndiff --git a/ls-tree.c b/ls-tree.c\n--- a/ls-tree.c\n+++ b/ls-tree.c\n@@ -127,7 +127,7 @@ static void list_recursive(void *buffer,\n \t\t * print out the info\n \t\t */\n \t\tif (!matches || (matched != NULL && mtype == 0)) {\n-\t\t\tprintf(\"%06o\\t%s\\t%s\\t\", mode,\n+\t\t\tprintf(\"%06o %s %s\\t\", mode,\n \t\t\t       S_ISDIR(mode) ? \"tree\" : \"blob\",\n \t\t\t       sha1_to_hex(sha1));\n \t\t\tprint_path_prefix(&this_prefix);\ndiff --git a/t/t0000-basic.sh b/t/t0000-basic.sh\n--- a/t/t0000-basic.sh\n+++ b/t/t0000-basic.sh\n@@ -92,14 +92,14 @@ test_expect_success \\\n     'git-ls-files --stage >current'\n \n cat >expected <<\\EOF\n-100644 f87290f8eb2cbbea7857214459a0739927eab154 0 path0\n-120000 15a98433ae33114b085f3eb3bb03b832b3180a01 0 path0sym\n-100644 3feff949ed00a62d9f7af97c15cd8a30595e7ac7 0 path2/file2\n-120000 d8ce161addc5173867a3c3c730924388daedbc38 0 path2/file2sym\n-100644 0aa34cae68d0878578ad119c86ca2b5ed5b28376 0 path3/file3\n-120000 8599103969b43aff7e430efea79ca4636466794f 0 path3/file3sym\n-100644 00fb5908cb97c2564a9783c0c64087333b3b464f 0 path3/subp3/file3\n-120000 6649a1ebe9e9f1c553b66f5a6e74136a07ccc57c 0 path3/subp3/file3sym\n+100644 f87290f8eb2cbbea7857214459a0739927eab154 0\tpath0\n+120000 15a98433ae33114b085f3eb3bb03b832b3180a01 0\tpath0sym\n+100644 3feff949ed00a62d9f7af97c15cd8a30595e7ac7 0\tpath2/file2\n+120000 d8ce161addc5173867a3c3c730924388daedbc38 0\tpath2/file2sym\n+100644 0aa34cae68d0878578ad119c86ca2b5ed5b28376 0\tpath3/file3\n+120000 8599103969b43aff7e430efea79ca4636466794f 0\tpath3/file3sym\n+100644 00fb5908cb97c2564a9783c0c64087333b3b464f 0\tpath3/subp3/file3\n+120000 6649a1ebe9e9f1c553b66f5a6e74136a07ccc57c 0\tpath3/subp3/file3sym\n EOF\n test_expect_success \\\n     'validate git-ls-files output for a known tree.' \\\n@@ -116,10 +116,10 @@ test_expect_success \\\n     'showing tree with git-ls-tree' \\\n     'git-ls-tree $tree >current'\n cat >expected <<\\EOF\n-100644\tblob\tf87290f8eb2cbbea7857214459a0739927eab154\tpath0\n-120000\tblob\t15a98433ae33114b085f3eb3bb03b832b3180a01\tpath0sym\n-040000\ttree\t58a09c23e2ca152193f2786e06986b7b6712bdbe\tpath2\n-040000\ttree\t21ae8269cacbe57ae09138dcc3a2887f904d02b3\tpath3\n+100644 blob f87290f8eb2cbbea7857214459a0739927eab154\tpath0\n+120000 blob 15a98433ae33114b085f3eb3bb03b832b3180a01\tpath0sym\n+040000 tree 58a09c23e2ca152193f2786e06986b7b6712bdbe\tpath2\n+040000 tree 21ae8269cacbe57ae09138dcc3a2887f904d02b3\tpath3\n EOF\n test_expect_success \\\n     'git-ls-tree output for a known tree.' \\\n@@ -129,17 +129,17 @@ test_expect_success \\\n     'showing tree with git-ls-tree -r' \\\n     'git-ls-tree -r $tree >current'\n cat >expected <<\\EOF\n-100644\tblob\tf87290f8eb2cbbea7857214459a0739927eab154\tpath0\n-120000\tblob\t15a98433ae33114b085f3eb3bb03b832b3180a01\tpath0sym\n-040000\ttree\t58a09c23e2ca152193f2786e06986b7b6712bdbe\tpath2\n-100644\tblob\t3feff949ed00a62d9f7af97c15cd8a30595e7ac7\tpath2/file2\n-120000\tblob\td8ce161addc5173867a3c3c730924388daedbc38\tpath2/file2sym\n-040000\ttree\t21ae8269cacbe57ae09138dcc3a2887f904d02b3\tpath3\n-100644\tblob\t0aa34cae68d0878578ad119c86ca2b5ed5b28376\tpath3/file3\n-120000\tblob\t8599103969b43aff7e430efea79ca4636466794f\tpath3/file3sym\n-040000\ttree\t3c5e5399f3a333eddecce7a9b9465b63f65f51e2\tpath3/subp3\n-100644\tblob\t00fb5908cb97c2564a9783c0c64087333b3b464f\tpath3/subp3/file3\n-120000\tblob\t6649a1ebe9e9f1c553b66f5a6e74136a07ccc57c\tpath3/subp3/file3sym\n+100644 blob f87290f8eb2cbbea7857214459a0739927eab154\tpath0\n+120000 blob 15a98433ae33114b085f3eb3bb03b832b3180a01\tpath0sym\n+040000 tree 58a09c23e2ca152193f2786e06986b7b6712bdbe\tpath2\n+100644 blob 3feff949ed00a62d9f7af97c15cd8a30595e7ac7\tpath2/file2\n+120000 blob d8ce161addc5173867a3c3c730924388daedbc38\tpath2/file2sym\n+040000 tree 21ae8269cacbe57ae09138dcc3a2887f904d02b3\tpath3\n+100644 blob 0aa34cae68d0878578ad119c86ca2b5ed5b28376\tpath3/file3\n+120000 blob 8599103969b43aff7e430efea79ca4636466794f\tpath3/file3sym\n+040000 tree 3c5e5399f3a333eddecce7a9b9465b63f65f51e2\tpath3/subp3\n+100644 blob 00fb5908cb97c2564a9783c0c64087333b3b464f\tpath3/subp3/file3\n+120000 blob 6649a1ebe9e9f1c553b66f5a6e74136a07ccc57c\tpath3/subp3/file3sym\n EOF\n test_expect_success \\\n     'git-ls-tree -r output for a known tree.' \\\ndiff --git a/t/t1000-read-tree-m-3way.sh b/t/t1000-read-tree-m-3way.sh\n--- a/t/t1000-read-tree-m-3way.sh\n+++ b/t/t1000-read-tree-m-3way.sh\n@@ -81,60 +81,60 @@ test_expect_success \\\n     '3-way merge with git-read-tree -m' \\\n     \"git-read-tree -m $tree_O $tree_A $tree_B\"\n \n-strip_object_id='s/^\\([0-7]*\\) [0-9a-f]* \\([0-3].*\\)$/\\1 \\2/'\n-\n+_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'\n+_x40=\"$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40\"\n test_expect_success \\\n     'git-ls-files --stage of the merge result' \\\n     'git-ls-files --stage >current- &&\n-     sed -e \"$strip_object_id\" <current- >current'\n+     sed -e \"s/ $_x40 / X /\" <current- >current'\n \n cat >expected <<\\EOF\n-100644 2 AA\n-100644 3 AA\n-100644 2 AN\n-100644 1 DD\n-100644 3 DF\n-100644 2 DF/DF\n-100644 1 DM\n-100644 3 DM\n-100644 1 DN\n-100644 3 DN\n-100644 2 LL\n-100644 3 LL\n-100644 1 MD\n-100644 2 MD\n-100644 1 MM\n-100644 2 MM\n-100644 3 MM\n-100644 0 MN\n-100644 3 NA\n-100644 1 ND\n-100644 2 ND\n-100644 0 NM\n-100644 0 NN\n-100644 0 SS\n-100644 1 TT\n-100644 2 TT\n-100644 3 TT\n-100644 2 Z/AA\n-100644 3 Z/AA\n-100644 2 Z/AN\n-100644 1 Z/DD\n-100644 1 Z/DM\n-100644 3 Z/DM\n-100644 1 Z/DN\n-100644 3 Z/DN\n-100644 1 Z/MD\n-100644 2 Z/MD\n-100644 1 Z/MM\n-100644 2 Z/MM\n-100644 3 Z/MM\n-100644 0 Z/MN\n-100644 3 Z/NA\n-100644 1 Z/ND\n-100644 2 Z/ND\n-100644 0 Z/NM\n-100644 0 Z/NN\n+100644 X 2\tAA\n+100644 X 3\tAA\n+100644 X 2\tAN\n+100644 X 1\tDD\n+100644 X 3\tDF\n+100644 X 2\tDF/DF\n+100644 X 1\tDM\n+100644 X 3\tDM\n+100644 X 1\tDN\n+100644 X 3\tDN\n+100644 X 2\tLL\n+100644 X 3\tLL\n+100644 X 1\tMD\n+100644 X 2\tMD\n+100644 X 1\tMM\n+100644 X 2\tMM\n+100644 X 3\tMM\n+100644 X 0\tMN\n+100644 X 3\tNA\n+100644 X 1\tND\n+100644 X 2\tND\n+100644 X 0\tNM\n+100644 X 0\tNN\n+100644 X 0\tSS\n+100644 X 1\tTT\n+100644 X 2\tTT\n+100644 X 3\tTT\n+100644 X 2\tZ/AA\n+100644 X 3\tZ/AA\n+100644 X 2\tZ/AN\n+100644 X 1\tZ/DD\n+100644 X 1\tZ/DM\n+100644 X 3\tZ/DM\n+100644 X 1\tZ/DN\n+100644 X 3\tZ/DN\n+100644 X 1\tZ/MD\n+100644 X 2\tZ/MD\n+100644 X 1\tZ/MM\n+100644 X 2\tZ/MM\n+100644 X 3\tZ/MM\n+100644 X 0\tZ/MN\n+100644 X 3\tZ/NA\n+100644 X 1\tZ/ND\n+100644 X 2\tZ/ND\n+100644 X 0\tZ/NM\n+100644 X 0\tZ/NN\n EOF\n \n test_expect_success \\\ndiff --git a/t/t3100-ls-tree-restrict.sh b/t/t3100-ls-tree-restrict.sh\n--- a/t/t3100-ls-tree-restrict.sh\n+++ b/t/t3100-ls-tree-restrict.sh\n@@ -34,7 +34,7 @@ test_expect_success \\\n _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'\n _x40=\"$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40\"\n test_output () {\n-    sed -e \"s/\t$_x40\t/\tX\t/\" <current >check\n+    sed -e \"s/ $_x40\t/ X\t/\" <current >check\n     diff -u expected check\n }\n \n@@ -42,9 +42,9 @@ test_expect_success \\\n     'ls-tree plain' \\\n     'git-ls-tree $tree >current &&\n      cat >expected <<\\EOF &&\n-100644\tblob\tX\tpath0\n-120000\tblob\tX\tpath1\n-040000\ttree\tX\tpath2\n+100644 blob X\tpath0\n+120000 blob X\tpath1\n+040000 tree X\tpath2\n EOF\n      test_output'\n \n@@ -52,13 +52,13 @@ test_expect_success \\\n     'ls-tree recursive' \\\n     'git-ls-tree -r $tree >current &&\n      cat >expected <<\\EOF &&\n-100644\tblob\tX\tpath0\n-120000\tblob\tX\tpath1\n-040000\ttree\tX\tpath2\n-040000\ttree\tX\tpath2/baz\n-100644\tblob\tX\tpath2/baz/b\n-120000\tblob\tX\tpath2/bazbo\n-100644\tblob\tX\tpath2/foo\n+100644 blob X\tpath0\n+120000 blob X\tpath1\n+040000 tree X\tpath2\n+040000 tree X\tpath2/baz\n+100644 blob X\tpath2/baz/b\n+120000 blob X\tpath2/bazbo\n+100644 blob X\tpath2/foo\n EOF\n      test_output'\n \n@@ -74,8 +74,8 @@ test_expect_success \\\n     'ls-tree filtered' \\\n     'git-ls-tree $tree path1 path0 >current &&\n      cat >expected <<\\EOF &&\n-100644\tblob\tX\tpath0\n-120000\tblob\tX\tpath1\n+100644 blob X\tpath0\n+120000 blob X\tpath1\n EOF\n      test_output'\n \n@@ -83,11 +83,11 @@ test_expect_success \\\n     'ls-tree filtered' \\\n     'git-ls-tree $tree path2 >current &&\n      cat >expected <<\\EOF &&\n-040000\ttree\tX\tpath2\n-040000\ttree\tX\tpath2/baz\n-100644\tblob\tX\tpath2/baz/b\n-120000\tblob\tX\tpath2/bazbo\n-100644\tblob\tX\tpath2/foo\n+040000 tree X\tpath2\n+040000 tree X\tpath2/baz\n+100644 blob X\tpath2/baz/b\n+120000 blob X\tpath2/bazbo\n+100644 blob X\tpath2/foo\n EOF\n      test_output'\n \n@@ -95,8 +95,8 @@ test_expect_success \\\n     'ls-tree filtered' \\\n     'git-ls-tree $tree path2/baz >current &&\n      cat >expected <<\\EOF &&\n-040000\ttree\tX\tpath2/baz\n-100644\tblob\tX\tpath2/baz/b\n+040000 tree X\tpath2/baz\n+100644 blob X\tpath2/baz/b\n EOF\n      test_output'\n \n------------------------------------------------\n\n"},{"id":"4006","messageId":"Pine.LNX.4.58.0505261512420.2307@ppc970.osdl.org","threadId":"724","inReplyTo":"7voeaxae0r.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH Cogito] Fix cg-log -f behavior","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-26T22:13:17Z","receivedAt":"2005-05-26T22:13:17Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Thu, 26 May 2005, Junio C Hamano wrote:\n> \n> The suggestion I made this morning is to make ls-tree and\n> ls-files use SP inside metadata and TAB before path.  If we\n> can agree on that is the way to go, then the output from these\n> commands would become:\n\nYes, let's make it so.\n\n\t\tLinus\n"}]}