{"thread":{"id":"53095","subject":"[PATCH v3 0/8] fix test failure with busybox","startedAt":"2020-03-25T15:06:56Z","lastAt":"2020-03-25T15:07:10Z","messageCount":9,"participants":["Đoàn Trần Công Danh"],"isPatch":true,"patchVersion":3,"patchTotal":8},"messages":[{"id":"393973","messageId":"cover.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":null,"subject":"[PATCH v3 0/8] fix test failure with busybox","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:13Z","receivedAt":"2020-03-25T15:06:56Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Despite non-compiance from busybox's sh(1), grep(1), diff(1), find(1)\nAlpine Linux is still a popular choice for container these days.\n\nFix false-positive failure in testsuite when run in Alpine Linux.\n\nĐoàn Trần Công Danh (8):\n  t4061: use POSIX compliant regex(7)\n  test-lib-functions: test_cmp: eval $GIT_TEST_CMP\n  t5003: drop the subshell in test_lazy_prereq\n  t5003: skip conversion test if unzip -a is unavailable\n  t5616: use rev-parse instead to get HEAD's object_id\n  t7063: drop non-POSIX argument \"-ls\" from find(1)\n  t4124: fix test for non-compliant diff(1)\n  t5703: feed raw data into test-tool unpack-sideband\n\n t/helper/test-pkt-line.c           |  2 +-\n t/t4061-diff-indent.sh             |  2 +-\n t/t4124-apply-ws-rule.sh           |  6 ++++++\n t/t5003-archive-zip.sh             | 24 ++++++++++++------------\n t/t5616-partial-clone.sh           |  2 +-\n t/t5703-upload-pack-ref-in-want.sh |  5 +----\n t/t7063-status-untracked-cache.sh  |  2 +-\n t/test-lib-functions.sh            |  2 +-\n 8 files changed, 24 insertions(+), 21 deletions(-)\n\nRange-diff against v2:\n1:  34f96548de = 1:  088905ab6f t4061: use POSIX compliant regex(7)\n2:  50f46986a6 = 2:  691d9d47ba test-lib-functions: test_cmp: eval $GIT_TEST_CMP\n3:  8719a07753 = 3:  759a589b83 t5003: drop the subshell in test_lazy_prereq\n4:  457eecaf9b = 4:  e5b09c290c t5003: skip conversion test if unzip -a is unavailable\n5:  d3bc855e17 = 5:  1b8740018c t5616: use rev-parse instead to get HEAD's object_id\n6:  64472ec3bc ! 6:  abb21b9e51 t7063: drop non-POSIX argument \"-ls\" from find(1)\n    @@ Commit message\n         However, `-ls` flag isn't required by POSIX's find(1), and\n         busybox(1) doesn't implement it.\n     \n    -    From the original conversation, it seems like find(1) with \"-type d\"\n    -    could trigger enough \"lstat(2)\" to ask FreeBSD update mtime.\n    -\n    -    Use only filter \"-type d\" for now.\n    +    Use \"-exec ls -ld {} +\" instead.\n     \n         Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n     \n    @@ t/t7063-status-untracked-cache.sh: GIT_FORCE_UNTRACKED_CACHE=true\n      \n      sync_mtime () {\n     -\tfind . -type d -ls >/dev/null\n    -+\tfind . -type d >/dev/null\n    ++\tfind . -type d -exec ls -ld {} + >/dev/null\n      }\n      \n      avoid_racy() {\n7:  51df6dd12d ! 7:  0502171f0f t4124: fix test for non-compliant diff(1)\n    @@ Commit message\n         POSIX's diff(1) requires output in normal diff format.\n         However, busybox's diff's output is written in unified format.\n     \n    -    POSIX requires no option for normal-diff format.\n    +    HP-UX's diff(1) doesn't understand \"-u\" as of now.\n     \n    -    A hint in test-lib-functions::test_cmp said `diff -u` isn't available\n    -    everywhere.\n    -\n    -    Workaround this problem by assuming `diff(1)` output is unified\n    +    Workaround this problem by checking \"diff -u\" output,\n         if we couldn't make anything from normal-diff format.\n     \n         Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n    @@ t/t4124-apply-ws-rule.sh: test_fix () {\n      \n      \t# find touched lines\n      \t$DIFF file target | sed -n -e \"s/^> //p\" >fixed\n    -+\t# busybox's diff(1) output unified format\n    ++\t# busybox's diff(1) doesn't output normal format\n     +\tif ! test -s fixed; then\n    -+\t\t$DIFF file target |\n    ++\t\t$DIFF -u file target |\n     +\t\tgrep -v '^+++ target' |\n     +\t\tsed -e \"/^+/s/+//\" >fixed\n     +\tfi\n8:  843c7f66d9 = 8:  8689e03400 t5703: feed raw data into test-tool unpack-sideband\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393974","messageId":"088905ab6fb5acffbf9a8158cf9b1ee28d0bb7b0.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 1/8] t4061: use POSIX compliant regex(7)","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:14Z","receivedAt":"2020-03-25T15:06:58Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"BRE interprets `+` literally, and\n`\\+` is undefined for POSIX BRE, from:\nhttps://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_02\n\n> The interpretation of an ordinary character preceded\n> by an unescaped <backslash> ( '\\\\' ) is undefined, except for:\n> - The characters ')', '(', '{', and '}'\n> - The digits 1 to 9 inclusive\n> - A character inside a bracket expression\n\nThis test is failing with busybox sed, the default sed of Alpine Linux\n\nWe have 2 options here:\n\n- Using literal `+` because BRE will interpret it as-is, or\n- Using character class `[+]` to defend against a sed that expects ERE\n\nERE-expected sed is theoretical at this point,\nbut we haven't found it, yet.\nAnd, we may run into other problems with that sed.\nLet's go with first option and fix it later if that sed could be found.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t4061-diff-indent.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t4061-diff-indent.sh b/t/t4061-diff-indent.sh\nindex 2affd7a100..0f7a6d97a8 100755\n--- a/t/t4061-diff-indent.sh\n+++ b/t/t4061-diff-indent.sh\n@@ -17,7 +17,7 @@ compare_diff () {\n # Compare blame output using the expectation for a diff as reference.\n # Only look for the lines coming from non-boundary commits.\n compare_blame () {\n-\tsed -n -e \"1,4d\" -e \"s/^\\+//p\" <\"$1\" >.tmp-1\n+\tsed -n -e \"1,4d\" -e \"s/^+//p\" <\"$1\" >.tmp-1\n \tsed -ne \"s/^[^^][^)]*) *//p\" <\"$2\" >.tmp-2\n \ttest_cmp .tmp-1 .tmp-2 && rm -f .tmp-1 .tmp-2\n }\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393975","messageId":"691d9d47ba1495d68c9506cd6600267b38afdd85.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 2/8] test-lib-functions: test_cmp: eval $GIT_TEST_CMP","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:15Z","receivedAt":"2020-03-25T15:06:59Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Shell recognises first non-assignment token as command name.\nWith /bin/sh linked to either /bin/bash or /bin/dash,\n`cd t/perf && ./p0000-perf-lib-sanity.sh -d -i -v` reports:\n\n> test_cmp:1: command not found: diff -u\n\nUsing `eval` to unquote $GIT_TEST_CMP as same as precedence in `git_editor`.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/test-lib-functions.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh\nindex 352c213d52..ab0e47ae17 100644\n--- a/t/test-lib-functions.sh\n+++ b/t/test-lib-functions.sh\n@@ -905,7 +905,7 @@ test_expect_code () {\n # - not all diff versions understand \"-u\"\n \n test_cmp() {\n-\t$GIT_TEST_CMP \"$@\"\n+\teval \"$GIT_TEST_CMP\" '\"$@\"'\n }\n \n # Check that the given config key has the expected value.\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393976","messageId":"759a589b83515cc7a676009d820e11fc36c5a0a2.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 3/8] t5003: drop the subshell in test_lazy_prereq","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:16Z","receivedAt":"2020-03-25T15:07:01Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"test_lazy_prereq will be evaluated in a throw-away directory.\n\nDrop unnecessary subshell and mkdir.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t5003-archive-zip.sh | 8 ++------\n 1 file changed, 2 insertions(+), 6 deletions(-)\n\ndiff --git a/t/t5003-archive-zip.sh b/t/t5003-archive-zip.sh\nindex 106eddbd85..df1374a312 100755\n--- a/t/t5003-archive-zip.sh\n+++ b/t/t5003-archive-zip.sh\n@@ -7,12 +7,8 @@ test_description='git archive --format=zip test'\n SUBSTFORMAT=%H%n\n \n test_lazy_prereq UNZIP_SYMLINKS '\n-\t(\n-\t\tmkdir unzip-symlinks &&\n-\t\tcd unzip-symlinks &&\n-\t\t\"$GIT_UNZIP\" \"$TEST_DIRECTORY\"/t5003/infozip-symlinks.zip &&\n-\t\ttest -h symlink\n-\t)\n+\t\"$GIT_UNZIP\" \"$TEST_DIRECTORY\"/t5003/infozip-symlinks.zip &&\n+\ttest -h symlink\n '\n \n check_zip() {\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393977","messageId":"e5b09c290c1ff0fb0d7171927194e598e46daae2.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 4/8] t5003: skip conversion test if unzip -a is unavailable","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:17Z","receivedAt":"2020-03-25T15:07:03Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Alpine Linux's default unzip(1) doesn't support `-a`.\n\nSkip those tests on that platform.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t5003-archive-zip.sh | 16 ++++++++++------\n 1 file changed, 10 insertions(+), 6 deletions(-)\n\ndiff --git a/t/t5003-archive-zip.sh b/t/t5003-archive-zip.sh\nindex df1374a312..3b76d2eb65 100755\n--- a/t/t5003-archive-zip.sh\n+++ b/t/t5003-archive-zip.sh\n@@ -11,6 +11,10 @@ test_lazy_prereq UNZIP_SYMLINKS '\n \ttest -h symlink\n '\n \n+test_lazy_prereq UNZIP_CONVERT '\n+\t\"$GIT_UNZIP\" -a \"$TEST_DIRECTORY\"/t5003/infozip-symlinks.zip\n+'\n+\n check_zip() {\n \tzipfile=$1.zip\n \tlistfile=$1.lst\n@@ -35,33 +39,33 @@ check_zip() {\n \textracted=${dir_with_prefix}a\n \toriginal=a\n \n-\ttest_expect_success UNZIP \" extract ZIP archive with EOL conversion\" '\n+\ttest_expect_success UNZIP_CONVERT \" extract ZIP archive with EOL conversion\" '\n \t\t(mkdir $dir && cd $dir && \"$GIT_UNZIP\" -a ../$zipfile)\n \t'\n \n-\ttest_expect_success UNZIP \" validate that text files are converted\" \"\n+\ttest_expect_success UNZIP_CONVERT \" validate that text files are converted\" \"\n \t\ttest_cmp_bin $extracted/text.cr $extracted/text.crlf &&\n \t\ttest_cmp_bin $extracted/text.cr $extracted/text.lf\n \t\"\n \n-\ttest_expect_success UNZIP \" validate that binary files are unchanged\" \"\n+\ttest_expect_success UNZIP_CONVERT \" validate that binary files are unchanged\" \"\n \t\ttest_cmp_bin $original/binary.cr   $extracted/binary.cr &&\n \t\ttest_cmp_bin $original/binary.crlf $extracted/binary.crlf &&\n \t\ttest_cmp_bin $original/binary.lf   $extracted/binary.lf\n \t\"\n \n-\ttest_expect_success UNZIP \" validate that diff files are converted\" \"\n+\ttest_expect_success UNZIP_CONVERT \" validate that diff files are converted\" \"\n \t\ttest_cmp_bin $extracted/diff.cr $extracted/diff.crlf &&\n \t\ttest_cmp_bin $extracted/diff.cr $extracted/diff.lf\n \t\"\n \n-\ttest_expect_success UNZIP \" validate that -diff files are unchanged\" \"\n+\ttest_expect_success UNZIP_CONVERT \" validate that -diff files are unchanged\" \"\n \t\ttest_cmp_bin $original/nodiff.cr   $extracted/nodiff.cr &&\n \t\ttest_cmp_bin $original/nodiff.crlf $extracted/nodiff.crlf &&\n \t\ttest_cmp_bin $original/nodiff.lf   $extracted/nodiff.lf\n \t\"\n \n-\ttest_expect_success UNZIP \" validate that custom diff is unchanged \" \"\n+\ttest_expect_success UNZIP_CONVERT \" validate that custom diff is unchanged \" \"\n \t\ttest_cmp_bin $original/custom.cr   $extracted/custom.cr &&\n \t\ttest_cmp_bin $original/custom.crlf $extracted/custom.crlf &&\n \t\ttest_cmp_bin $original/custom.lf   $extracted/custom.lf\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393978","messageId":"1b8740018c411dec2813d03c34c56dfa5d1d8845.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 5/8] t5616: use rev-parse instead to get HEAD's object_id","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:18Z","receivedAt":"2020-03-25T15:07:04Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Only HEAD's object_id is necessary, rev-list is an overkill.\n\nDespite POSIX requires grep(1) treat single pattern with <newline>\nas multiple patterns.\nbusybox's grep(1) (as of v1.31.1) haven't implemented it yet.\n\nUse rev-parse to simplify the test and avoid busybox unimplemented\nfeatures.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t5616-partial-clone.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh\nindex 77bb91e976..09e640cae4 100755\n--- a/t/t5616-partial-clone.sh\n+++ b/t/t5616-partial-clone.sh\n@@ -49,7 +49,7 @@ test_expect_success 'do partial clone 1' '\n test_expect_success 'verify that .promisor file contains refs fetched' '\n \tls pc1/.git/objects/pack/pack-*.promisor >promisorlist &&\n \ttest_line_count = 1 promisorlist &&\n-\tgit -C srv.bare rev-list HEAD >headhash &&\n+\tgit -C srv.bare rev-parse --verify HEAD >headhash &&\n \tgrep \"$(cat headhash) HEAD\" $(cat promisorlist) &&\n \tgrep \"$(cat headhash) refs/heads/master\" $(cat promisorlist)\n '\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393979","messageId":"0502171f0fc25a44e865b5a435906ef1096546c5.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 7/8] t4124: fix test for non-compliant diff(1)","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:20Z","receivedAt":"2020-03-25T15:07:08Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"POSIX's diff(1) requires output in normal diff format.\nHowever, busybox's diff's output is written in unified format.\n\nHP-UX's diff(1) doesn't understand \"-u\" as of now.\n\nWorkaround this problem by checking \"diff -u\" output,\nif we couldn't make anything from normal-diff format.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t4124-apply-ws-rule.sh | 6 ++++++\n 1 file changed, 6 insertions(+)\n\ndiff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh\nindex 971a5a7512..691f82da9f 100755\n--- a/t/t4124-apply-ws-rule.sh\n+++ b/t/t4124-apply-ws-rule.sh\n@@ -52,6 +52,12 @@ test_fix () {\n \n \t# find touched lines\n \t$DIFF file target | sed -n -e \"s/^> //p\" >fixed\n+\t# busybox's diff(1) doesn't output normal format\n+\tif ! test -s fixed; then\n+\t\t$DIFF -u file target |\n+\t\tgrep -v '^+++ target' |\n+\t\tsed -e \"/^+/s/+//\" >fixed\n+\tfi\n \n \t# the changed lines are all expected to change\n \tfixed_cnt=$(wc -l <fixed)\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393980","messageId":"abb21b9e518079f8d5ee98e9e6d3bc2b1bae64a4.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 6/8] t7063: drop non-POSIX argument \"-ls\" from find(1)","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:19Z","receivedAt":"2020-03-25T15:07:08Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"Since commit 6b7728db81, (t7063: work around FreeBSD's lazy mtime\nupdate feature, 2016-08-03), we started to use ls as a trick to update\ndirectory's mtime.\n\nHowever, `-ls` flag isn't required by POSIX's find(1), and\nbusybox(1) doesn't implement it.\n\nUse \"-exec ls -ld {} +\" instead.\n\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/t7063-status-untracked-cache.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t7063-status-untracked-cache.sh b/t/t7063-status-untracked-cache.sh\nindex 190ae149cf..6738497ea7 100755\n--- a/t/t7063-status-untracked-cache.sh\n+++ b/t/t7063-status-untracked-cache.sh\n@@ -18,7 +18,7 @@ GIT_FORCE_UNTRACKED_CACHE=true\n export GIT_FORCE_UNTRACKED_CACHE\n \n sync_mtime () {\n-\tfind . -type d -ls >/dev/null\n+\tfind . -type d -exec ls -ld {} + >/dev/null\n }\n \n avoid_racy() {\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"},{"id":"393981","messageId":"8689e03400a4a4c2a2c95cc5aac3f1d24ba7525d.1585148327.git.congdanhqx@gmail.com","threadId":"53095","inReplyTo":"cover.1585148327.git.congdanhqx@gmail.com","subject":"[PATCH v3 8/8] t5703: feed raw data into test-tool unpack-sideband","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2020-03-25T15:06:21Z","receivedAt":"2020-03-25T15:07:10Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"busybox's sed isn't binary clean.\nThus, triggers false-negative on this test.\n\nWe could replace sed with perl on this usecase.\nBut, we could slightly modify the helper to discard unwanted data in the\nbeginning.\n\nFix the false negative by updating this helper.\n\nHelped-by: Jeff King <peff@peff.net>\nSigned-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>\n---\n t/helper/test-pkt-line.c           | 2 +-\n t/t5703-upload-pack-ref-in-want.sh | 5 +----\n 2 files changed, 2 insertions(+), 5 deletions(-)\n\ndiff --git a/t/helper/test-pkt-line.c b/t/helper/test-pkt-line.c\nindex 282d536384..12ca698e17 100644\n--- a/t/helper/test-pkt-line.c\n+++ b/t/helper/test-pkt-line.c\n@@ -67,7 +67,7 @@ static void unpack_sideband(void)\n \t\tcase PACKET_READ_NORMAL:\n \t\t\tband = reader.line[0] & 0xff;\n \t\t\tif (band < 1 || band > 2)\n-\t\t\t\tdie(\"unexpected side band %d\", band);\n+\t\t\t\tcontinue; /* skip non-sideband packets */\n \t\t\tfd = band;\n \n \t\t\twrite_or_die(fd, reader.line + 1, reader.pktlen - 1);\ndiff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh\nindex 7fba3063bf..a34460f7d8 100755\n--- a/t/t5703-upload-pack-ref-in-want.sh\n+++ b/t/t5703-upload-pack-ref-in-want.sh\n@@ -13,10 +13,7 @@ get_actual_refs () {\n }\n \n get_actual_commits () {\n-\tsed -n -e '/packfile/,/0000/{\n-\t\t/packfile/d\n-\t\tp\n-\t\t}' <out | test-tool pkt-line unpack-sideband >o.pack &&\n+\ttest-tool pkt-line unpack-sideband <out >o.pack &&\n \tgit index-pack o.pack &&\n \tgit verify-pack -v o.idx >objs &&\n \tgrep commit objs | cut -d\" \" -f1 | sort >actual_commits\n-- \n2.26.0.rc2.357.g1e1ba0441d\n\n"}]}