(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git log">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ VSub_Name "$TEST_DIRECTORY") (/lib-gpg.sh))}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"\n"> <"\techo one >one &&\n"> <"\tgit add one &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m initial &&\n"> <"\n"> <"\techo ichi >one &&\n"> <"\tgit add one &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m second &&\n"> <"\n"> <"\tgit mv one ichi &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m third &&\n"> <"\n"> <"\tcp ichi ein &&\n"> <"\tgit add ein &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m fourth &&\n"> <"\n"> <"\tmkdir a &&\n"> <"\techo ni >a/two &&\n"> <"\tgit add a/two &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m fifth &&\n"> <"\n"> <"\tgit rm a/two &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m sixth\n"> <"\n"> ) } ) (SimpleCommand words: [ {(printf)} { (DQ (sixth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (fifth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (fourth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (third) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (second) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (initial) ) } ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[77])] ) (C {(test_expect_success)} {(SQ <pretty>)} { (SQ <"\n"> <"\n"> <"\tgit log --pretty=\"format:%s\" > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [ {(printf)} { (DQ (sixth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (fifth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (fourth) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (third) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (second) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (initial) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ) } ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[112])] ) (C {(test_expect_success)} {(SQ <"pretty (tformat)">)} { (SQ <"\n"> <"\n"> <"\tgit log --pretty=\"tformat:%s\" > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"pretty (shortcut)">)} {(SQ <"\n"> <"\n"> <"\tgit log --pretty=\"%s\" > actual &&\n"> <"\ttest_cmp expect actual\n">)} ) (C {(test_expect_success)} {(SQ <format>)} {(SQ <"\n"> <"\n"> <"\tgit log --format=\"%s\" > actual &&\n"> <"\ttest_cmp expect actual\n">)} ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[160]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ (" This is\n") (" the sixth\n") (" commit.\n") (" This is\n") (" the fifth\n") (" commit.\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [164] ) ] ) (C {(test_expect_success)} {(SQ <"format %w(11,1,2)">)} { (SQ <"\n"> <"\n"> <"\tgit log -2 --format=\"%w(11,1,2)This is the %s commit.\" > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"format %w(,1,2)">)} { (SQ <"\n"> <"\n"> <"\tgit log -2 --format=\"%w(,1,2)This is%nthe %s%ncommit.\" > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[205]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("804a787 sixth\n") ("394ef78 fifth\n") ("5d31159 fourth\n") ("2fbe8c0 third\n") ("f7dab8e second\n") ("3a2fdcb initial\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [209] ) ] ) (C {(test_expect_success)} {(SQ <oneline>)} {(SQ <"\n"> <"\n"> <"\tgit log --oneline > actual &&\n"> <"\ttest_cmp expect actual\n">)} ) (C {(test_expect_success)} {(SQ <"diff-filter=A">)} { (SQ <"\n"> <"\n"> <"\tgit log --no-renames --pretty=\"format:%s\" --diff-filter=A HEAD > actual &&\n"> <"\tgit log --no-renames --pretty=\"format:%s\" --diff-filter A HEAD > actual-separate &&\n"> <"\tprintf \"fifth\\nfourth\\nthird\\ninitial\" > expect &&\n"> <"\ttest_cmp expect actual &&\n"> <"\ttest_cmp expect actual-separate\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-filter=M">)} { (SQ <"\n"> <"\n"> <"\tactual=$(git log --pretty=\"format:%s\" --diff-filter=M HEAD) &&\n"> <"\texpect=$(echo second) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-filter=D">)} { (SQ <"\n"> <"\n"> <"\tactual=$(git log --no-renames --pretty=\"format:%s\" --diff-filter=D HEAD) &&\n"> <"\texpect=$(echo sixth ; echo third) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-filter=R">)} { (SQ <"\n"> <"\n"> <"\tactual=$(git log -M --pretty=\"format:%s\" --diff-filter=R HEAD) &&\n"> <"\texpect=$(echo third) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-filter=C">)} { (SQ <"\n"> <"\n"> <"\tactual=$(git log -C -C --pretty=\"format:%s\" --diff-filter=C HEAD) &&\n"> <"\texpect=$(echo fourth) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"git log --follow">)} { (SQ <"\n"> <"\n"> <"\tactual=$(git log --follow --pretty=\"format:%s\" ichi) &&\n"> <"\texpect=$(echo third ; echo second ; echo initial) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"git config log.follow works like --follow">)} { (SQ <"\n"> <"\ttest_config log.follow true &&\n"> <"\tactual=$(git log --pretty=\"format:%s\" ichi) &&\n"> <"\texpect=$(echo third ; echo second ; echo initial) &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"git config log.follow does not die with multiple paths">)} { (SQ <"\n"> <"\ttest_config log.follow true &&\n"> <"\tgit log --pretty=\"format:%s\" ichi ein\n"> ) } ) (C {(test_expect_success)} {(SQ <"git config log.follow does not die with no paths">)} {(SQ <"\n"> <"\ttest_config log.follow true &&\n"> <"\tgit log --\n">)} ) (C {(test_expect_success)} {(SQ <"git config log.follow is overridden by --no-follow">)} { (SQ <"\n"> <"\ttest_config log.follow true &&\n"> <"\tactual=$(git log --no-follow --pretty=\"format:%s\" ichi) &&\n"> <"\texpect=\"third\" &&\n"> <"\tverbose test \"$actual\" = \"$expect\"\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[388]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("804a787 sixth\n") ("394ef78 fifth\n") ("5d31159 fourth\n"))} do_expansion: True here_end: EOF was_filled: True spids: [392] ) ] ) (C {(test_expect_success)} {(SQ <"git log --no-walk <commits> sorts by commit time">)} { (SQ <"\n"> <"\tgit log --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"git log --no-walk=sorted <commits> sorts by commit time">)} { (SQ <"\n"> <"\tgit log --no-walk=sorted --oneline 5d31159 804a787 394ef78 > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[427]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("=== 804a787 sixth\n") ("=== 394ef78 fifth\n") ("=== 5d31159 fourth\n"))} do_expansion: True here_end: EOF was_filled: True spids: [431] ) ] ) (C {(test_expect_success)} {(SQ <"git log --line-prefix=\"=== \" --no-walk <commits> sorts by commit time">)} { (SQ <"\n"> < "\tgit log --line-prefix=\"=== \" --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n" > <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[453]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("5d31159 fourth\n") ("804a787 sixth\n") ("394ef78 fifth\n"))} do_expansion: True here_end: EOF was_filled: True spids: [457] ) ] ) (C {(test_expect_success)} {(SQ <"git log --no-walk=unsorted <commits> leaves list of commits as given">)} { (SQ <"\n"> <"\tgit log --no-walk=unsorted --oneline 5d31159 804a787 394ef78 > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"git show <commits> leaves list of commits as given">)} { (SQ <"\n"> <"\tgit show --oneline -s 5d31159 804a787 394ef78 > actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup case sensitivity tests">)} { (SQ <"\n"> <"\techo case >one &&\n"> <"\ttest_tick &&\n"> <"\tgit add one &&\n"> <"\tgit commit -a -m Second\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --grep">)} { (SQ <"\n"> <"\techo second >expect &&\n"> <"\tgit log -1 --pretty=\"tformat:%s\" --grep=sec >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[521]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("second\n") ("initial\n"))} do_expansion: True here_end: EOF was_filled: True spids: [525] ) ] ) (C {(test_expect_success)} {(SQ <"log --invert-grep --grep">)} { (SQ <"\n"> <"\tgit log --pretty=\"tformat:%s\" --invert-grep --grep=th --grep=Sec >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --invert-grep --grep -i">)} { (SQ <"\n"> <"\techo initial >expect &&\n"> <"\tgit log --pretty=\"tformat:%s\" --invert-grep -i --grep=th --grep=Sec >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --grep option parsing">)} { (SQ <"\n"> <"\techo second >expect &&\n"> <"\tgit log -1 --pretty=\"tformat:%s\" --grep sec >actual &&\n"> <"\ttest_cmp expect actual &&\n"> <"\ttest_must_fail git log -1 --pretty=\"tformat:%s\" --grep\n"> ) } ) (C {(test_expect_success)} {(SQ <"log -i --grep">)} { (SQ <"\n"> <"\techo Second >expect &&\n"> <"\tgit log -1 --pretty=\"tformat:%s\" -i --grep=sec >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --grep -i">)} { (SQ <"\n"> <"\techo Second >expect &&\n"> <"\tgit log -1 --pretty=\"tformat:%s\" --grep=sec -i >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log -F -E --grep=<ere> uses ere">)} { (SQ <"\n"> <"\techo second >expect &&\n"> <"\tgit log -1 --pretty=\"tformat:%s\" -F -E --grep=s.c.nd >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log with grep.patternType configuration">)} { (SQ <"\n"> <"\t>expect &&\n"> <"\tgit -c grep.patterntype=fixed \\\n"> <"\tlog -1 --pretty=tformat:%s --grep=s.c.nd >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log with grep.patternType configuration and command line">)} { (SQ <"\n"> <"\techo second >expect &&\n"> <"\tgit -c grep.patterntype=fixed \\\n"> <"\tlog -1 --pretty=tformat:%s --basic-regexp --grep=s.c.nd >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[647]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("* Second\n") ("* sixth\n") ("* fifth\n") ("* fourth\n") ("* third\n") ("* second\n") ("* initial\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [651] ) ] ) (C {(test_expect_success)} {(SQ <"simple log --graph">)} { (SQ <"\n"> <"\tgit log --graph --pretty=tformat:%s >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[677]) (HereDoc op_id: Redir_DLess fd: -1 body: { (DQ ("123 * Second\n") ("123 * sixth\n") ("123 * fifth\n") ("123 * fourth\n") ("123 * third\n") ("123 * second\n") ("123 * initial\n") ) } do_expansion: True here_end: EOF was_filled: True spids: [681] ) ] ) (C {(test_expect_success)} {(SQ <"simple log --graph --line-prefix=\"123 \"">)} { (SQ <"\n"> <"\tgit log --graph --line-prefix=\"123 \" --pretty=tformat:%s >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"set up merge history">)} { (SQ <"\n"> <"\tgit checkout -b side HEAD~4 &&\n"> <"\ttest_commit side-1 1 1 &&\n"> <"\ttest_commit side-2 2 2 &&\n"> <"\tgit checkout master &&\n"> <"\tgit merge side\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[723]) (HereDoc op_id: Redir_DLess fd: -1 body: {("* Merge branch 'side'\n") ("|\\\n") ("| * side-2\n") ("| * side-1\n") ("* | Second\n") ("* | sixth\n") ("* | fifth\n") ("* | fourth\n") ("|/\n") ("* third\n") ("* second\n") ("* initial\n") } do_expansion: False here_end: EOF was_filled: True spids: [727] ) ] ) (C {(test_expect_success)} {(SQ <"log --graph with merge">)} { (SQ <"\n"> <"\tgit log --graph --date-order --pretty=tformat:%s |\n"> <"\t\tsed \"s/ *\\$//\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[748]) (HereDoc op_id: Redir_DLess fd: -1 body: {("| | | * Merge branch 'side'\n") ("| | | |\\\n") ("| | | | * side-2\n") ("| | | | * side-1\n") ("| | | * | Second\n") ("| | | * | sixth\n") ("| | | * | fifth\n") ("| | | * | fourth\n") ("| | | |/\n") ("| | | * third\n") ("| | | * second\n") ("| | | * initial\n") } do_expansion: False here_end: EOF was_filled: True spids: [752] ) ] ) (C {(test_expect_success)} {(SQ <"log --graph --line-prefix=\"| | | \" with merge">)} { (SQ <"\n"> <"\tgit log --line-prefix=\"| | | \" --graph --date-order --pretty=tformat:%s |\n"> <"\t\tsed \"s/ *\\$//\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --raw --graph -m with merge">)} { (SQ <"\n"> <"\tgit log --raw --graph --oneline -m master | head -n 500 >actual &&\n"> <"\tgrep \"initial\" actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"diff-tree --graph">)} { (SQ <"\n"> <"\tgit diff-tree --graph master^ | head -n 500 >actual &&\n"> <"\tgrep \"one\" actual\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[799]) (HereDoc op_id: Redir_DLess fd: -1 body: {("* commit master\n") ("|\\ Merge: A B\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | Merge branch 'side'\n") ("| |\n") ("| * commit side\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | side-2\n") ("| |\n") ("| * commit tags/side-1\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | side-1\n") ("| |\n") ("* | commit master~1\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | Second\n") ("| |\n") ("* | commit master~2\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | sixth\n") ("| |\n") ("* | commit master~3\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | fifth\n") ("| |\n") ("* | commit master~4\n") ("|/ Author: A U Thor <author@example.com>\n") ("|\n") ("| fourth\n") ("|\n") ("* commit tags/side-1~1\n") ("| Author: A U Thor <author@example.com>\n") ("|\n") ("| third\n") ("|\n") ("* commit tags/side-1~2\n") ("| Author: A U Thor <author@example.com>\n") ("|\n") ("| second\n") ("|\n") ("* commit tags/side-1~3\n") (" Author: A U Thor <author@example.com>\n") ("\n") (" initial\n") } do_expansion: False here_end: EOF was_filled: True spids: [803] ) ] ) (C {(test_expect_success)} {(SQ <"log --graph with full output">)} { (SQ <"\n"> <"\tgit log --graph --date-order --pretty=short |\n"> <"\t\tgit name-rev --name-only --stdin |\n"> <"\t\tsed \"s/Merge:.*/Merge: A B/;s/ *\\$//\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"set up more tangled history">)} { (SQ <"\n"> <"\tgit checkout -b tangle HEAD~6 &&\n"> <"\ttest_commit tangle-a tangle-a a &&\n"> <"\tgit merge master~3 &&\n"> <"\tgit merge side~1 &&\n"> <"\tgit checkout master &&\n"> <"\tgit merge tangle &&\n"> <"\tgit checkout -b reach &&\n"> <"\ttest_commit reach &&\n"> <"\tgit checkout master &&\n"> <"\tgit checkout -b octopus-a &&\n"> <"\ttest_commit octopus-a &&\n"> <"\tgit checkout master &&\n"> <"\tgit checkout -b octopus-b &&\n"> <"\ttest_commit octopus-b &&\n"> <"\tgit checkout master &&\n"> <"\ttest_commit seventh &&\n"> <"\tgit merge octopus-a octopus-b &&\n"> <"\tgit merge reach\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[854]) (HereDoc op_id: Redir_DLess fd: -1 body: {("* Merge tag 'reach'\n") ("|\\\n") ("| \\\n") ("| \\\n") ("*-. \\ Merge tags 'octopus-a' and 'octopus-b'\n") ("|\\ \\ \\\n") ("* | | | seventh\n") ("| | * | octopus-b\n") ("| |/ /\n") ("|/| |\n") ("| * | octopus-a\n") ("|/ /\n") ("| * reach\n") ("|/\n") ("* Merge branch 'tangle'\n") ("|\\\n") ("| * Merge branch 'side' (early part) into tangle\n") ("| |\\\n") ("| * \\ Merge branch 'master' (early part) into tangle\n") ("| |\\ \\\n") ("| * | | tangle-a\n") ("* | | | Merge branch 'side'\n") ("|\\ \\ \\ \\\n") ("| * | | | side-2\n") ("| | |_|/\n") ("| |/| |\n") ("| * | | side-1\n") ("* | | | Second\n") ("* | | | sixth\n") ("| |_|/\n") ("|/| |\n") ("* | | fifth\n") ("* | | fourth\n") ("|/ /\n") ("* | third\n") ("|/\n") ("* second\n") ("* initial\n") } do_expansion: False here_end: EOF was_filled: True spids: [858] ) ] ) (C {(test_expect_success)} {(SQ <"log --graph with merge">)} { (SQ <"\n"> <"\tgit log --graph --date-order --pretty=tformat:%s |\n"> <"\t\tsed \"s/ *\\$//\" >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log.decorate configuration">)} { (SQ <"\n"> <"\tgit log --oneline >expect.none &&\n"> <"\tgit log --oneline --decorate >expect.short &&\n"> <"\tgit log --oneline --decorate=full >expect.full &&\n"> <"\n"> <"\techo \"[log] decorate\" >>.git/config &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\n"> <"\ttest_config log.decorate true &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\tgit log --oneline --decorate=full >actual &&\n"> <"\ttest_cmp expect.full actual &&\n"> <"\tgit log --oneline --decorate=no >actual &&\n"> <"\ttest_cmp expect.none actual &&\n"> <"\n"> <"\ttest_config log.decorate no &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.none actual &&\n"> <"\tgit log --oneline --decorate >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\tgit log --oneline --decorate=full >actual &&\n"> <"\ttest_cmp expect.full actual &&\n"> <"\n"> <"\ttest_config log.decorate 1 &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\tgit log --oneline --decorate=full >actual &&\n"> <"\ttest_cmp expect.full actual &&\n"> <"\tgit log --oneline --decorate=no >actual &&\n"> <"\ttest_cmp expect.none actual &&\n"> <"\n"> <"\ttest_config log.decorate short &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\tgit log --oneline --no-decorate >actual &&\n"> <"\ttest_cmp expect.none actual &&\n"> <"\tgit log --oneline --decorate=full >actual &&\n"> <"\ttest_cmp expect.full actual &&\n"> <"\n"> <"\ttest_config log.decorate full &&\n"> <"\tgit log --oneline >actual &&\n"> <"\ttest_cmp expect.full actual &&\n"> <"\tgit log --oneline --no-decorate >actual &&\n"> <"\ttest_cmp expect.none actual &&\n"> <"\tgit log --oneline --decorate >actual &&\n"> <"\ttest_cmp expect.short actual &&\n"> <"\n"> <"\ttest_unconfig log.decorate &&\n"> <"\tgit log --pretty=raw >expect.raw &&\n"> <"\ttest_config log.decorate full &&\n"> <"\tgit log --pretty=raw >actual &&\n"> <"\ttest_cmp expect.raw actual\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"reflog is expected format">)} { (SQ <"\n"> <"\tgit log -g --abbrev-commit --pretty=oneline >expect &&\n"> <"\tgit reflog >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"whatchanged is expected format">)} { (SQ <"\n"> <"\tgit log --no-merges --raw >expect &&\n"> <"\tgit whatchanged >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log.abbrevCommit configuration">)} { (SQ <"\n"> <"\tgit log --abbrev-commit >expect.log.abbrev &&\n"> <"\tgit log --no-abbrev-commit >expect.log.full &&\n"> <"\tgit log --pretty=raw >expect.log.raw &&\n"> <"\tgit reflog --abbrev-commit >expect.reflog.abbrev &&\n"> <"\tgit reflog --no-abbrev-commit >expect.reflog.full &&\n"> <"\tgit whatchanged --abbrev-commit >expect.whatchanged.abbrev &&\n"> <"\tgit whatchanged --no-abbrev-commit >expect.whatchanged.full &&\n"> <"\n"> <"\ttest_config log.abbrevCommit true &&\n"> <"\n"> <"\tgit log >actual &&\n"> <"\ttest_cmp expect.log.abbrev actual &&\n"> <"\tgit log --no-abbrev-commit >actual &&\n"> <"\ttest_cmp expect.log.full actual &&\n"> <"\n"> <"\tgit log --pretty=raw >actual &&\n"> <"\ttest_cmp expect.log.raw actual &&\n"> <"\n"> <"\tgit reflog >actual &&\n"> <"\ttest_cmp expect.reflog.abbrev actual &&\n"> <"\tgit reflog --no-abbrev-commit >actual &&\n"> <"\ttest_cmp expect.reflog.full actual &&\n"> <"\n"> <"\tgit whatchanged >actual &&\n"> <"\ttest_cmp expect.whatchanged.abbrev actual &&\n"> <"\tgit whatchanged --no-abbrev-commit >actual &&\n"> <"\ttest_cmp expect.whatchanged.full actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"show added path under \"--follow -M\"">)} { (SQ <"\n"> <"\t# This tests for a regression introduced in v1.7.2-rc0~103^2~2\n"> <"\ttest_create_repo regression &&\n"> <"\t(\n"> <"\t\tcd regression &&\n"> <"\t\ttest_commit needs-another-commit &&\n"> <"\t\ttest_commit foo.bar &&\n"> <"\t\tgit log -M --follow -p foo.bar.t &&\n"> <"\t\tgit log -M --follow --stat foo.bar.t &&\n"> <"\t\tgit log -M --follow --name-only foo.bar.t\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"git log -c --follow">)} { (SQ <"\n"> <"\ttest_create_repo follow-c &&\n"> <"\t(\n"> <"\t\tcd follow-c &&\n"> <"\t\ttest_commit initial file original &&\n"> <"\t\tgit rm file &&\n"> <"\t\ttest_commit rename file2 original &&\n"> <"\t\tgit reset --hard initial &&\n"> <"\t\ttest_commit modify file foo &&\n"> <"\t\tgit merge -m merge rename &&\n"> <"\t\tgit log -c --follow file2\n"> <"\t)\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1053]) (HereDoc op_id: Redir_DLess fd: -1 body: {("* commit COMMIT_OBJECT_NAME\n") ("|\\ Merge: MERGE_PARENTS\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | Merge HEADS DESCRIPTION\n") ("| |\n") ("| * commit COMMIT_OBJECT_NAME\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | reach\n") ("| | ---\n") ("| | reach.t | 1 +\n") ("| | 1 file changed, 1 insertion(+)\n") ("| |\n") ("| | diff --git a/reach.t b/reach.t\n") ("| | new file mode 100644\n") ("| | index 0000000..10c9591\n") ("| | --- /dev/null\n") ("| | +++ b/reach.t\n") ("| | @@ -0,0 +1 @@\n") ("| | +reach\n") ("| |\n") ("| \\\n") ("*-. \\ commit COMMIT_OBJECT_NAME\n") ("|\\ \\ \\ Merge: MERGE_PARENTS\n") ("| | | | Author: A U Thor <author@example.com>\n") ("| | | |\n") ("| | | | Merge HEADS DESCRIPTION\n") ("| | | |\n") ("| | * | commit COMMIT_OBJECT_NAME\n") ("| | |/ Author: A U Thor <author@example.com>\n") ("| | |\n") ("| | | octopus-b\n") ("| | | ---\n") ("| | | octopus-b.t | 1 +\n") ("| | | 1 file changed, 1 insertion(+)\n") ("| | |\n") ("| | | diff --git a/octopus-b.t b/octopus-b.t\n") ("| | | new file mode 100644\n") ("| | | index 0000000..d5fcad0\n") ("| | | --- /dev/null\n") ("| | | +++ b/octopus-b.t\n") ("| | | @@ -0,0 +1 @@\n") ("| | | +octopus-b\n") ("| | |\n") ("| * | commit COMMIT_OBJECT_NAME\n") ("| |/ Author: A U Thor <author@example.com>\n") ("| |\n") ("| | octopus-a\n") ("| | ---\n") ("| | octopus-a.t | 1 +\n") ("| | 1 file changed, 1 insertion(+)\n") ("| |\n") ("| | diff --git a/octopus-a.t b/octopus-a.t\n") ("| | new file mode 100644\n") ("| | index 0000000..11ee015\n") ("| | --- /dev/null\n") ("| | +++ b/octopus-a.t\n") ("| | @@ -0,0 +1 @@\n") ("| | +octopus-a\n") ("| |\n") ("* | commit COMMIT_OBJECT_NAME\n") ("|/ Author: A U Thor <author@example.com>\n") ("|\n") ("| seventh\n") ("| ---\n") ("| seventh.t | 1 +\n") ("| 1 file changed, 1 insertion(+)\n") ("|\n") ("| diff --git a/seventh.t b/seventh.t\n") ("| new file mode 100644\n") ("| index 0000000..9744ffc\n") ("| --- /dev/null\n") ("| +++ b/seventh.t\n") ("| @@ -0,0 +1 @@\n") ("| +seventh\n") ("|\n") ("* commit COMMIT_OBJECT_NAME\n") ("|\\ Merge: MERGE_PARENTS\n") ("| | Author: A U Thor <author@example.com>\n") ("| |\n") ("| | Merge branch 'tangle'\n") ("| |\n") ("| * commit COMMIT_OBJECT_NAME\n") ("| |\\ Merge: MERGE_PARENTS\n") ("| | | Author: A U Thor <author@example.com>\n") ("| | |\n") ("| | | Merge branch 'side' (early part) into tangle\n") ("| | |\n") ("| * | commit COMMIT_OBJECT_NAME\n") ("| |\\ \\ Merge: MERGE_PARENTS\n") ("| | | | Author: A U Thor <author@example.com>\n") ("| | | |\n") ("| | | | Merge branch 'master' (early part) into tangle\n") ("| | | |\n") ("| * | | commit COMMIT_OBJECT_NAME\n") ("| | | | Author: A U Thor <author@example.com>\n") ("| | | |\n") ("| | | | tangle-a\n") ("| | | | ---\n") ("| | | | tangle-a | 1 +\n") ("| | | | 1 file changed, 1 insertion(+)\n") ("| | | |\n") ("| | | | diff --git a/tangle-a b/tangle-a\n") ("| | | | new file mode 100644\n") ("| | | | index 0000000..7898192\n") ("| | | | --- /dev/null\n") ("| | | | +++ b/tangle-a\n") ("| | | | @@ -0,0 +1 @@\n") ("| | | | +a\n") ("| | | |\n") ("* | | | commit COMMIT_OBJECT_NAME\n") ("|\\ \\ \\ \\ Merge: MERGE_PARENTS\n") ("| | | | | Author: A U Thor <author@example.com>\n") ("| | | | |\n") ("| | | | | Merge branch 'side'\n") ("| | | | |\n") ("| * | | | commit COMMIT_OBJECT_NAME\n") ("| | |_|/ Author: A U Thor <author@example.com>\n") ("| |/| |\n") ("| | | | side-2\n") ("| | | | ---\n") ("| | | | 2 | 1 +\n") ("| | | | 1 file changed, 1 insertion(+)\n") ("| | | |\n") ("| | | | diff --git a/2 b/2\n") ("| | | | new file mode 100644\n") ("| | | | index 0000000..0cfbf08\n") ("| | | | --- /dev/null\n") ("| | | | +++ b/2\n") ("| | | | @@ -0,0 +1 @@\n") ("| | | | +2\n") ("| | | |\n") ("| * | | commit COMMIT_OBJECT_NAME\n") ("| | | | Author: A U Thor <author@example.com>\n") ("| | | |\n") ("| | | | side-1\n") ("| | | | ---\n") ("| | | | 1 | 1 +\n") ("| | | | 1 file changed, 1 insertion(+)\n") ("| | | |\n") ("| | | | diff --git a/1 b/1\n") ("| | | | new file mode 100644\n") ("| | | | index 0000000..d00491f\n") ("| | | | --- /dev/null\n") ("| | | | +++ b/1\n") ("| | | | @@ -0,0 +1 @@\n") ("| | | | +1\n") ("| | | |\n") ("* | | | commit COMMIT_OBJECT_NAME\n") ("| | | | Author: A U Thor <author@example.com>\n") ("| | | |\n") ("| | | | Second\n") ("| | | | ---\n") ("| | | | one | 1 +\n") ("| | | | 1 file changed, 1 insertion(+)\n") ("| | | |\n") ("| | | | diff --git a/one b/one\n") ("| | | | new file mode 100644\n") ("| | | | index 0000000..9a33383\n") ("| | | | --- /dev/null\n") ("| | | | +++ b/one\n") ("| | | | @@ -0,0 +1 @@\n") ("| | | | +case\n") ("| | | |\n") ("* | | | commit COMMIT_OBJECT_NAME\n") ("| |_|/ Author: A U Thor <author@example.com>\n") ("|/| |\n") ("| | | sixth\n") ("| | | ---\n") ("| | | a/two | 1 -\n") ("| | | 1 file changed, 1 deletion(-)\n") ("| | |\n") ("| | | diff --git a/a/two b/a/two\n") ("| | | deleted file mode 100644\n") ("| | | index 9245af5..0000000\n") ("| | | --- a/a/two\n") ("| | | +++ /dev/null\n") ("| | | @@ -1 +0,0 @@\n") ("| | | -ni\n") ("| | |\n") ("* | | commit COMMIT_OBJECT_NAME\n") ("| | | Author: A U Thor <author@example.com>\n") ("| | |\n") ("| | | fifth\n") ("| | | ---\n") ("| | | a/two | 1 +\n") ("| | | 1 file changed, 1 insertion(+)\n") ("| | |\n") ("| | | diff --git a/a/two b/a/two\n") ("| | | new file mode 100644\n") ("| | | index 0000000..9245af5\n") ("| | | --- /dev/null\n") ("| | | +++ b/a/two\n") ("| | | @@ -0,0 +1 @@\n") ("| | | +ni\n") ("| | |\n") ("* | | commit COMMIT_OBJECT_NAME\n") ("|/ / Author: A U Thor <author@example.com>\n") ("| |\n") ("| | fourth\n") ("| | ---\n") ("| | ein | 1 +\n") ("| | 1 file changed, 1 insertion(+)\n") ("| |\n") ("| | diff --git a/ein b/ein\n") ("| | new file mode 100644\n") ("| | index 0000000..9d7e69f\n") ("| | --- /dev/null\n") ("| | +++ b/ein\n") ("| | @@ -0,0 +1 @@\n") ("| | +ichi\n") ("| |\n") ("* | commit COMMIT_OBJECT_NAME\n") ("|/ Author: A U Thor <author@example.com>\n") ("|\n") ("| third\n") ("| ---\n") ("| ichi | 1 +\n") ("| one | 1 -\n") ("| 2 files changed, 1 insertion(+), 1 deletion(-)\n") ("|\n") ("| diff --git a/ichi b/ichi\n") ("| new file mode 100644\n") ("| index 0000000..9d7e69f\n") ("| --- /dev/null\n") ("| +++ b/ichi\n") ("| @@ -0,0 +1 @@\n") ("| +ichi\n") ("| diff --git a/one b/one\n") ("| deleted file mode 100644\n") ("| index 9d7e69f..0000000\n") ("| --- a/one\n") ("| +++ /dev/null\n") ("| @@ -1 +0,0 @@\n") ("| -ichi\n") ("|\n") ("* commit COMMIT_OBJECT_NAME\n") ("| Author: A U Thor <author@example.com>\n") ("|\n") ("| second\n") ("| ---\n") ("| one | 2 +-\n") ("| 1 file changed, 1 insertion(+), 1 deletion(-)\n") ("|\n") ("| diff --git a/one b/one\n") ("| index 5626abf..9d7e69f 100644\n") ("| --- a/one\n") ("| +++ b/one\n") ("| @@ -1 +1 @@\n") ("| -one\n") ("| +ichi\n") ("|\n") ("* commit COMMIT_OBJECT_NAME\n") (" Author: A U Thor <author@example.com>\n") ("\n") (" initial\n") (" ---\n") (" one | 1 +\n") (" 1 file changed, 1 insertion(+)\n") ("\n") (" diff --git a/one b/one\n") (" new file mode 100644\n") (" index 0000000..5626abf\n") (" --- /dev/null\n") (" +++ b/one\n") (" @@ -0,0 +1 @@\n") (" +one\n") } do_expansion: False here_end: EOF was_filled: True spids: [1056] ) ] ) (FuncDef name: sanitize_output body: (BraceGroup children: [ (C {(sed)} {(-e)} {(SQ <"s/ *$//">)} {(-e)} {(SQ <"s/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/">)} {(-e)} {(SQ <"s/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/">)} {(-e)} {(SQ <"s/Merge tag.*/Merge HEADS DESCRIPTION/">)} {(-e)} {(SQ <"s/Merge commit.*/Merge HEADS DESCRIPTION/">)} {(-e)} {(SQ <"s/, 0 deletions(-)//">)} {(-e)} {(SQ <"s/, 0 insertions(+)//">)} {(-e)} {(SQ <"s/ 1 files changed, / 1 file changed, /">)} {(-e)} {(SQ <"s/, 1 deletions(-)/, 1 deletion(-)/">)} {(-e)} {(SQ <"s/, 1 insertions(+)/, 1 insertion(+)/">)} ) ] spids: [1066] ) spids: [1061 1065] ) (C {(test_expect_success)} {(SQ <"log --graph with diff and stats">)} { (SQ <"\n"> <"\tgit log --no-renames --graph --pretty=short --stat -p >actual &&\n"> <"\tsanitize_output >actual.sanitized <actual &&\n"> <"\ttest_i18ncmp expect actual.sanitized\n"> ) } ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[1168]) (HereDoc op_id: Redir_DLess fd: -1 body: {("*** * commit COMMIT_OBJECT_NAME\n") ("*** |\\ Merge: MERGE_PARENTS\n") ("*** | | Author: A U Thor <author@example.com>\n") ("*** | |\n") ("*** | | Merge HEADS DESCRIPTION\n") ("*** | |\n") ("*** | * commit COMMIT_OBJECT_NAME\n") ("*** | | Author: A U Thor <author@example.com>\n") ("*** | |\n") ("*** | | reach\n") ("*** | | ---\n") ("*** | | reach.t | 1 +\n") ("*** | | 1 file changed, 1 insertion(+)\n") ("*** | |\n") ("*** | | diff --git a/reach.t b/reach.t\n") ("*** | | new file mode 100644\n") ("*** | | index 0000000..10c9591\n") ("*** | | --- /dev/null\n") ("*** | | +++ b/reach.t\n") ("*** | | @@ -0,0 +1 @@\n") ("*** | | +reach\n") ("*** | |\n") ("*** | \\\n") ("*** *-. \\ commit COMMIT_OBJECT_NAME\n") ("*** |\\ \\ \\ Merge: MERGE_PARENTS\n") ("*** | | | | Author: A U Thor <author@example.com>\n") ("*** | | | |\n") ("*** | | | | Merge HEADS DESCRIPTION\n") ("*** | | | |\n") ("*** | | * | commit COMMIT_OBJECT_NAME\n") ("*** | | |/ Author: A U Thor <author@example.com>\n") ("*** | | |\n") ("*** | | | octopus-b\n") ("*** | | | ---\n") ("*** | | | octopus-b.t | 1 +\n") ("*** | | | 1 file changed, 1 insertion(+)\n") ("*** | | |\n") ("*** | | | diff --git a/octopus-b.t b/octopus-b.t\n") ("*** | | | new file mode 100644\n") ("*** | | | index 0000000..d5fcad0\n") ("*** | | | --- /dev/null\n") ("*** | | | +++ b/octopus-b.t\n") ("*** | | | @@ -0,0 +1 @@\n") ("*** | | | +octopus-b\n") ("*** | | |\n") ("*** | * | commit COMMIT_OBJECT_NAME\n") ("*** | |/ Author: A U Thor <author@example.com>\n") ("*** | |\n") ("*** | | octopus-a\n") ("*** | | ---\n") ("*** | | octopus-a.t | 1 +\n") ("*** | | 1 file changed, 1 insertion(+)\n") ("*** | |\n") ("*** | | diff --git a/octopus-a.t b/octopus-a.t\n") ("*** | | new file mode 100644\n") ("*** | | index 0000000..11ee015\n") ("*** | | --- /dev/null\n") ("*** | | +++ b/octopus-a.t\n") ("*** | | @@ -0,0 +1 @@\n") ("*** | | +octopus-a\n") ("*** | |\n") ("*** * | commit COMMIT_OBJECT_NAME\n") ("*** |/ Author: A U Thor <author@example.com>\n") ("*** |\n") ("*** | seventh\n") ("*** | ---\n") ("*** | seventh.t | 1 +\n") ("*** | 1 file changed, 1 insertion(+)\n") ("*** |\n") ("*** | diff --git a/seventh.t b/seventh.t\n") ("*** | new file mode 100644\n") ("*** | index 0000000..9744ffc\n") ("*** | --- /dev/null\n") ("*** | +++ b/seventh.t\n") ("*** | @@ -0,0 +1 @@\n") ("*** | +seventh\n") ("*** |\n") ("*** * commit COMMIT_OBJECT_NAME\n") ("*** |\\ Merge: MERGE_PARENTS\n") ("*** | | Author: A U Thor <author@example.com>\n") ("*** | |\n") ("*** | | Merge branch 'tangle'\n") ("*** | |\n") ("*** | * commit COMMIT_OBJECT_NAME\n") ("*** | |\\ Merge: MERGE_PARENTS\n") ("*** | | | Author: A U Thor <author@example.com>\n") ("*** | | |\n") ("*** | | | Merge branch 'side' (early part) into tangle\n") ("*** | | |\n") ("*** | * | commit COMMIT_OBJECT_NAME\n") ("*** | |\\ \\ Merge: MERGE_PARENTS\n") ("*** | | | | Author: A U Thor <author@example.com>\n") ("*** | | | |\n") ("*** | | | | Merge branch 'master' (early part) into tangle\n") ("*** | | | |\n") ("*** | * | | commit COMMIT_OBJECT_NAME\n") ("*** | | | | Author: A U Thor <author@example.com>\n") ("*** | | | |\n") ("*** | | | | tangle-a\n") ("*** | | | | ---\n") ("*** | | | | tangle-a | 1 +\n") ("*** | | | | 1 file changed, 1 insertion(+)\n") ("*** | | | |\n") ("*** | | | | diff --git a/tangle-a b/tangle-a\n") ("*** | | | | new file mode 100644\n") ("*** | | | | index 0000000..7898192\n") ("*** | | | | --- /dev/null\n") ("*** | | | | +++ b/tangle-a\n") ("*** | | | | @@ -0,0 +1 @@\n") ("*** | | | | +a\n") ("*** | | | |\n") ("*** * | | | commit COMMIT_OBJECT_NAME\n") ("*** |\\ \\ \\ \\ Merge: MERGE_PARENTS\n") ("*** | | | | | Author: A U Thor <author@example.com>\n") ("*** | | | | |\n") ("*** | | | | | Merge branch 'side'\n") ("*** | | | | |\n") ("*** | * | | | commit COMMIT_OBJECT_NAME\n") ("*** | | |_|/ Author: A U Thor <author@example.com>\n") ("*** | |/| |\n") ("*** | | | | side-2\n") ("*** | | | | ---\n") ("*** | | | | 2 | 1 +\n") ("*** | | | | 1 file changed, 1 insertion(+)\n") ("*** | | | |\n") ("*** | | | | diff --git a/2 b/2\n") ("*** | | | | new file mode 100644\n") ("*** | | | | index 0000000..0cfbf08\n") ("*** | | | | --- /dev/null\n") ("*** | | | | +++ b/2\n") ("*** | | | | @@ -0,0 +1 @@\n") ("*** | | | | +2\n") ("*** | | | |\n") ("*** | * | | commit COMMIT_OBJECT_NAME\n") ("*** | | | | Author: A U Thor <author@example.com>\n") ("*** | | | |\n") ("*** | | | | side-1\n") ("*** | | | | ---\n") ("*** | | | | 1 | 1 +\n") ("*** | | | | 1 file changed, 1 insertion(+)\n") ("*** | | | |\n") ("*** | | | | diff --git a/1 b/1\n") ("*** | | | | new file mode 100644\n") ("*** | | | | index 0000000..d00491f\n") ("*** | | | | --- /dev/null\n") ("*** | | | | +++ b/1\n") ("*** | | | | @@ -0,0 +1 @@\n") ("*** | | | | +1\n") ("*** | | | |\n") ("*** * | | | commit COMMIT_OBJECT_NAME\n") ("*** | | | | Author: A U Thor <author@example.com>\n") ("*** | | | |\n") ("*** | | | | Second\n") ("*** | | | | ---\n") ("*** | | | | one | 1 +\n") ("*** | | | | 1 file changed, 1 insertion(+)\n") ("*** | | | |\n") ("*** | | | | diff --git a/one b/one\n") ("*** | | | | new file mode 100644\n") ("*** | | | | index 0000000..9a33383\n") ("*** | | | | --- /dev/null\n") ("*** | | | | +++ b/one\n") ("*** | | | | @@ -0,0 +1 @@\n") ("*** | | | | +case\n") ("*** | | | |\n") ("*** * | | | commit COMMIT_OBJECT_NAME\n") ("*** | |_|/ Author: A U Thor <author@example.com>\n") ("*** |/| |\n") ("*** | | | sixth\n") ("*** | | | ---\n") ("*** | | | a/two | 1 -\n") ("*** | | | 1 file changed, 1 deletion(-)\n") ("*** | | |\n") ("*** | | | diff --git a/a/two b/a/two\n") ("*** | | | deleted file mode 100644\n") ("*** | | | index 9245af5..0000000\n") ("*** | | | --- a/a/two\n") ("*** | | | +++ /dev/null\n") ("*** | | | @@ -1 +0,0 @@\n") ("*** | | | -ni\n") ("*** | | |\n") ("*** * | | commit COMMIT_OBJECT_NAME\n") ("*** | | | Author: A U Thor <author@example.com>\n") ("*** | | |\n") ("*** | | | fifth\n") ("*** | | | ---\n") ("*** | | | a/two | 1 +\n") ("*** | | | 1 file changed, 1 insertion(+)\n") ("*** | | |\n") ("*** | | | diff --git a/a/two b/a/two\n") ("*** | | | new file mode 100644\n") ("*** | | | index 0000000..9245af5\n") ("*** | | | --- /dev/null\n") ("*** | | | +++ b/a/two\n") ("*** | | | @@ -0,0 +1 @@\n") ("*** | | | +ni\n") ("*** | | |\n") ("*** * | | commit COMMIT_OBJECT_NAME\n") ("*** |/ / Author: A U Thor <author@example.com>\n") ("*** | |\n") ("*** | | fourth\n") ("*** | | ---\n") ("*** | | ein | 1 +\n") ("*** | | 1 file changed, 1 insertion(+)\n") ("*** | |\n") ("*** | | diff --git a/ein b/ein\n") ("*** | | new file mode 100644\n") ("*** | | index 0000000..9d7e69f\n") ("*** | | --- /dev/null\n") ("*** | | +++ b/ein\n") ("*** | | @@ -0,0 +1 @@\n") ("*** | | +ichi\n") ("*** | |\n") ("*** * | commit COMMIT_OBJECT_NAME\n") ("*** |/ Author: A U Thor <author@example.com>\n") ("*** |\n") ("*** | third\n") ("*** | ---\n") ("*** | ichi | 1 +\n") ("*** | one | 1 -\n") ("*** | 2 files changed, 1 insertion(+), 1 deletion(-)\n") ("*** |\n") ("*** | diff --git a/ichi b/ichi\n") ("*** | new file mode 100644\n") ("*** | index 0000000..9d7e69f\n") ("*** | --- /dev/null\n") ("*** | +++ b/ichi\n") ("*** | @@ -0,0 +1 @@\n") ("*** | +ichi\n") ("*** | diff --git a/one b/one\n") ("*** | deleted file mode 100644\n") ("*** | index 9d7e69f..0000000\n") ("*** | --- a/one\n") ("*** | +++ /dev/null\n") ("*** | @@ -1 +0,0 @@\n") ("*** | -ichi\n") ("*** |\n") ("*** * commit COMMIT_OBJECT_NAME\n") ("*** | Author: A U Thor <author@example.com>\n") ("*** |\n") ("*** | second\n") ("*** | ---\n") ("*** | one | 2 +-\n") ("*** | 1 file changed, 1 insertion(+), 1 deletion(-)\n") ("*** |\n") ("*** | diff --git a/one b/one\n") ("*** | index 5626abf..9d7e69f 100644\n") ("*** | --- a/one\n") ("*** | +++ b/one\n") ("*** | @@ -1 +1 @@\n") ("*** | -one\n") ("*** | +ichi\n") ("*** |\n") ("*** * commit COMMIT_OBJECT_NAME\n") ("*** Author: A U Thor <author@example.com>\n") ("***\n") ("*** initial\n") ("*** ---\n") ("*** one | 1 +\n") ("*** 1 file changed, 1 insertion(+)\n") ("***\n") ("*** diff --git a/one b/one\n") ("*** new file mode 100644\n") ("*** index 0000000..5626abf\n") ("*** --- /dev/null\n") ("*** +++ b/one\n") ("*** @@ -0,0 +1 @@\n") ("*** +one\n") } do_expansion: False here_end: EOF was_filled: True spids: [1171] ) ] ) (C {(test_expect_success)} {(SQ <"log --line-prefix=\"*** \" --graph with diff and stats">)} { (SQ <"\n"> < "\tgit log --line-prefix=\"*** \" --no-renames --graph --pretty=short --stat -p >actual &&\n" > <"\tsanitize_output >actual.sanitized <actual &&\n"> <"\ttest_i18ncmp expect actual.sanitized\n"> ) } ) (C {(test_expect_success)} {(SQ <"dotdot is a parent directory">)} { (SQ <"\n"> <"\tmkdir -p a/b &&\n"> <"\t( echo sixth && echo fifth ) >expect &&\n"> <"\t( cd a/b && git log --format=%s .. ) >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"setup signed branch">)} { (SQ <"\n"> <"\ttest_when_finished \"git reset --hard && git checkout master\" &&\n"> <"\tgit checkout -b signed master &&\n"> <"\techo foo >foo &&\n"> <"\tgit add foo &&\n"> <"\tgit commit -S -m signed_commit\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"log --graph --show-signature">)} { (SQ <"\n"> <"\tgit log --graph --show-signature -n1 signed >actual &&\n"> <"\tgrep \"^| gpg: Signature made\" actual &&\n"> <"\tgrep \"^| gpg: Good signature\" actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"log --graph --show-signature for merged tag">)} { (SQ <"\n"> <"\ttest_when_finished \"git reset --hard && git checkout master\" &&\n"> <"\tgit checkout -b plain master &&\n"> <"\techo aaa >bar &&\n"> <"\tgit add bar &&\n"> <"\tgit commit -m bar_commit &&\n"> <"\tgit checkout -b tagged master &&\n"> <"\techo bbb >baz &&\n"> <"\tgit add baz &&\n"> <"\tgit commit -m baz_commit &&\n"> <"\tgit tag -s -m signed_tag_msg signed_tag &&\n"> <"\tgit checkout plain &&\n"> <"\tgit merge --no-ff -m msg signed_tag &&\n"> <"\tgit log --graph --show-signature -n1 plain >actual &&\n"> <"\tgrep \"^|\\\\\\ merged tag\" actual &&\n"> <"\tgrep \"^| | gpg: Signature made\" actual &&\n"> <"\tgrep \"^| | gpg: Good signature\" actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"--no-show-signature overrides --show-signature">)} { (SQ <"\n"> <"\tgit log -1 --show-signature --no-show-signature signed >actual &&\n"> <"\t! grep \"^gpg:\" actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"log.showsignature=true behaves like --show-signature">)} { (SQ <"\n"> <"\ttest_config log.showsignature true &&\n"> <"\tgit log -1 signed >actual &&\n"> <"\tgrep \"gpg: Signature made\" actual &&\n"> <"\tgrep \"gpg: Good signature\" actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"--no-show-signature overrides log.showsignature=true">)} { (SQ <"\n"> <"\ttest_config log.showsignature true &&\n"> <"\tgit log -1 --no-show-signature signed >actual &&\n"> <"\t! grep \"^gpg:\" actual\n"> ) } ) (C {(test_expect_success)} {(GPG)} {(SQ <"--show-signature overrides log.showsignature=false">)} { (SQ <"\n"> <"\ttest_config log.showsignature false &&\n"> <"\tgit log -1 --show-signature signed >actual &&\n"> <"\tgrep \"gpg: Signature made\" actual &&\n"> <"\tgrep \"gpg: Good signature\" actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --graph --no-walk is forbidden">)} {(SQ <"\n"> <"\ttest_must_fail git log --graph --no-walk\n">)} ) (C {(test_expect_success)} {(SQ <"log diagnoses bogus HEAD">)} { (SQ <"\n"> <"\tgit init empty &&\n"> <"\ttest_must_fail git -C empty log 2>stderr &&\n"> <"\ttest_i18ngrep does.not.have.any.commits stderr &&\n"> <"\techo 1234abcd >empty/.git/refs/heads/master &&\n"> <"\ttest_must_fail git -C empty log 2>stderr &&\n"> <"\ttest_i18ngrep broken stderr &&\n"> <"\techo \"ref: refs/heads/invalid.lock\" >empty/.git/HEAD &&\n"> <"\ttest_must_fail git -C empty log 2>stderr &&\n"> <"\ttest_i18ngrep broken stderr &&\n"> <"\ttest_must_fail git -C empty log --default totally-bogus 2>stderr &&\n"> <"\ttest_i18ngrep broken stderr\n"> ) } ) (C {(test_expect_success)} {(SQ <"set up --source tests">)} { (SQ <"\n"> <"\tgit checkout --orphan source-a &&\n"> <"\ttest_commit one &&\n"> <"\ttest_commit two &&\n"> <"\tgit checkout -b source-b HEAD^ &&\n"> <"\ttest_commit three\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --source paints branch names">)} { (SQ <"\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t09e12a9\tsource-b three\n"> <"\t8e393e1\tsource-a two\n"> <"\t1ac6c77\tsource-b one\n"> <"\tEOF\n"> <"\tgit log --oneline --source source-a source-b >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_expect_success)} {(SQ <"log --source paints tag names">)} { (SQ <"\n"> <"\tgit tag -m tagged source-tag &&\n"> <"\tcat >expect <<-\\EOF &&\n"> <"\t09e12a9\tsource-tag three\n"> <"\t8e393e1\tsource-a two\n"> <"\t1ac6c77\tsource-tag one\n"> <"\tEOF\n"> <"\tgit log --oneline --source source-tag source-a >actual &&\n"> <"\ttest_cmp expect actual\n"> ) } ) (C {(test_done)}) ] )