(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git commit' span_id:22))} spids: [20] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/diff-lib.sh))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:author) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'The Real Author <someguy@his.email.org>' span_id:39))} spids: [37] ) ] ) (C {(test_tick)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'initial status' span_id:49))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id:Id.Lit_Chars val:'\techo bongo bongo >file &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\tgit status >actual &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "Initial commit" actual\n' span_id:57) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail initial amend' span_id:64))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:68) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit --amend\n' span_id:69) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: initial commit' span_id:76))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit commit -m initial\n' span_id:81) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'-m and -F do not mix' span_id:88))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id: Id.Lit_Chars val: '\tgit checkout HEAD file && echo >>file && git add file &&\n' span_id: 93 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -m foo -m bar -F file\n' span_id:94) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'-m and -C do not mix' span_id:101))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id: Id.Lit_Chars val: '\tgit checkout HEAD file && echo >>file && git add file &&\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -C HEAD -m illegal\n' span_id:107) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'paths and -a do not mix' span_id:114))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) (Token id:Id.Lit_Chars val:'\techo King of the bongo >file &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -m foo -a file\n' span_id:120) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'can use paths with --interactive' span_id:129))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:133) (Token id:Id.Lit_Chars val:'\techo bong-o-bong >file &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\t# 2: update, 1:st path, that is all, 7: quit\n' span_id:135) (Token id:Id.Lit_Chars val:'\t( echo 2; echo 1; echo; echo 7 ) |\n' span_id:136) (Token id:Id.Lit_Chars val:'\tgit commit -m foo --interactive file &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^\n' span_id:138) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using invalid commit with -C' span_id:145))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit --allow-empty -C bogus\n' span_id: 150 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'nothing to commit' span_id:157))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -m initial\n' span_id:163) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dry-run fails with nothing to commit' span_id:170))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit -m initial --dry-run\n' span_id: 175 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--short fails with nothing to commit' span_id:182))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:186) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit -m initial --short\n' span_id: 187 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--porcelain fails with nothing to commit' span_id:194))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:198) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit -m initial --porcelain\n' span_id: 199 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--long fails with nothing to commit' span_id:206))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:210) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit -m initial --long\n' span_id: 211 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: non-initial commit' span_id:218))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:222) (Token id:Id.Lit_Chars val:'\techo bongo bongo bongo >file &&\n' span_id:223) (Token id:Id.Lit_Chars val:'\tgit commit -m next -a\n' span_id:224) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dry-run with stuff to commit returns ok' span_id:231))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) (Token id:Id.Lit_Chars val:'\techo bongo bongo bongo >>file &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tgit commit -m next -a --dry-run\n' span_id:237) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'--short with stuff to commit returns ok' span_id:244))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:248) (Token id:Id.Lit_Chars val:'\techo bongo bongo bongo >>file &&\n' span_id:249) (Token id:Id.Lit_Chars val:'\tgit commit -m next -a --short\n' span_id:250) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'--porcelain with stuff to commit returns ok' span_id:257))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:261) (Token id:Id.Lit_Chars val:'\techo bongo bongo bongo >>file &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\tgit commit -m next -a --porcelain\n' span_id:263) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--long with stuff to commit returns ok' span_id:270))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id:Id.Lit_Chars val:'\techo bongo bongo bongo >>file &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\tgit commit -m next -a --long\n' span_id:276) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit message from non-existing file' span_id:283))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id: Id.Lit_Chars val: '\techo more bongo: bongo bongo bongo bongo >file &&\n' span_id: 288 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -F gah -a\n' span_id:289) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'empty commit message' span_id:296))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:300) (Token id: Id.Lit_Chars val: '\t# Empty except stray tabs and spaces on a few lines.\n' span_id: 301 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/@//g" >msg <<-\\EOF &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\t\t@\t\t@\n' span_id:303) (Token id:Id.Lit_Chars val:'\t\t@@\n' span_id:304) (Token id:Id.Lit_Chars val:'\t\t@ @\n' span_id:305) (Token id:Id.Lit_Chars val:'\t\t@Signed-off-by: hula@\n' span_id:306) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:307) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -F msg -a\n' span_id:308) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'template "emptyness" check does not kick in with -F' span_id: 315 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:319) (Token id: Id.Lit_Chars val: '\tgit checkout HEAD file && echo >>file && git add file &&\n' span_id: 320 ) (Token id:Id.Lit_Chars val:'\tgit commit -t file -F file\n' span_id:321) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'template "emptyness" check' span_id:328))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:332) (Token id: Id.Lit_Chars val: '\tgit checkout HEAD file && echo >>file && git add file &&\n' span_id: 333 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -t file 2>err &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "did not edit" err\n' span_id:335) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: commit message from file' span_id:342))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:346) (Token id: Id.Lit_Chars val: '\tgit checkout HEAD file && echo >>file && git add file &&\n' span_id: 347 ) (Token id: Id.Lit_Chars val: '\techo this is the commit message, coming from a file >msg &&\n' span_id: 348 ) (Token id:Id.Lit_Chars val:'\tgit commit -F msg -a\n' span_id:349) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend commit' span_id:356))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:360) (Token id:Id.Lit_Chars val:'\tcat >editor <<-\\EOF &&\n' span_id:361) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:362) (Token id: Id.Lit_Chars val: '\tsed -e "s/a file/an amend commit/g" < "$1" > "$1-"\n' span_id: 363 ) (Token id:Id.Lit_Chars val:'\tmv "$1-" "$1"\n' span_id:364) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:365) (Token id:Id.Lit_Chars val:'\tchmod 755 editor &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tEDITOR=./editor git commit --amend\n' span_id:367) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend --only ignores staged contents' span_id:374))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:378) (Token id:Id.Lit_Chars val:'\tcp file file.expect &&\n' span_id:379) (Token id:Id.Lit_Chars val:'\techo changed >file &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:381) (Token id:Id.Lit_Chars val:'\tgit commit --no-edit --amend --only &&\n' span_id:382) (Token id: Id.Lit_Chars val: '\tgit cat-file blob HEAD:file >file.actual &&\n' span_id: 383 ) (Token id:Id.Lit_Chars val:'\ttest_cmp file.expect file.actual &&\n' span_id:384) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code\n' span_id:385) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up editor' span_id:392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:396) (Token id:Id.Lit_Chars val:'\tcat >editor <<-\\EOF &&\n' span_id:397) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:398) (Token id: Id.Lit_Chars val: '\tsed -e "s/unamended/amended/g" <"$1" >"$1-"\n' span_id: 399 ) (Token id:Id.Lit_Chars val:'\tmv "$1-" "$1"\n' span_id:400) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:401) (Token id:Id.Lit_Chars val:'\tchmod 755 editor\n' span_id:402) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend without launching editor' span_id:409))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:413) (Token id:Id.Lit_Chars val:'\techo unamended >expect &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "unamended" &&\n' span_id:415) (Token id:Id.Lit_Chars val:'\techo needs more bongo >file &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:417) (Token id: Id.Lit_Chars val: '\tEDITOR=./editor git commit --no-edit --amend &&\n' span_id: 418 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code HEAD -- file &&\n' span_id:419) (Token id: Id.Lit_Chars val: '\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id: 420 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:421) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--amend --edit' span_id:428))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:432) (Token id:Id.Lit_Chars val:'\techo amended >expect &&\n' span_id:433) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "unamended" &&\n' span_id:434) (Token id:Id.Lit_Chars val:'\techo bongo again >file &&\n' span_id:435) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:436) (Token id: Id.Lit_Chars val: '\tEDITOR=./editor git commit --edit --amend &&\n' span_id: 437 ) (Token id:Id.Lit_Chars val:'\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id:438) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:439) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--amend --edit of empty message' span_id:446))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:450) (Token id:Id.Lit_Chars val:'\tcat >replace <<-\\EOF &&\n' span_id:451) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:452) (Token id:Id.Lit_Chars val:'\techo "amended" >"$1"\n' span_id:453) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:454) (Token id:Id.Lit_Chars val:'\tchmod 755 replace &&\n' span_id:455) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty --allow-empty-message -m "" &&\n' span_id:456) (Token id:Id.Lit_Chars val:'\techo more bongo >file &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:458) (Token id: Id.Lit_Chars val: '\tEDITOR=./replace git commit --edit --amend &&\n' span_id: 459 ) (Token id:Id.Lit_Chars val:'\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id:460) (Token id:Id.Lit_Chars val:'\t./replace expect &&\n' span_id:461) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:462) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--amend to set message to empty' span_id:469))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) (Token id:Id.Lit_Chars val:'\techo bata >file &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\tgit commit -m "unamended" &&\n' span_id:476) (Token id:Id.Lit_Chars val:'\tgit commit --amend --allow-empty-message -m "" &&\n' span_id:477) (Token id: Id.Lit_Chars val: '\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id: 478 ) (Token id:Id.Lit_Chars val:'\techo "" >expect &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:480) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '--amend to set empty message needs --allow-empty-message' span_id: 487 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:491) (Token id:Id.Lit_Chars val:'\techo conga >file &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\tgit commit -m "unamended" &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit --amend -m "" &&\n' span_id:495) (Token id: Id.Lit_Chars val: '\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id: 496 ) (Token id:Id.Lit_Chars val:'\techo "unamended" >expect &&\n' span_id:497) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:498) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'-m --edit' span_id:505))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:509) (Token id:Id.Lit_Chars val:'\techo amended >expect &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m buffer &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\techo bongo bongo >file &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:513) (Token id: Id.Lit_Chars val: '\tEDITOR=./editor git commit -m unamended --edit &&\n' span_id: 514 ) (Token id:Id.Lit_Chars val:'\tgit diff-tree -s --format=%s HEAD >msg &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\ttest_cmp expect msg\n' span_id:516) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'-m and -F do not mix' span_id:523))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) (Token id: Id.Lit_Chars val: '\techo enough with the bongos >file &&\n' span_id: 528 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -F msg -m amending .\n' span_id:529) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using message from other commit' span_id:536))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:540) (Token id:Id.Lit_Chars val:'\tgit commit -C HEAD^ .\n' span_id:541) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'editing message from other commit' span_id:548))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:552) (Token id:Id.Lit_Chars val:'\tcat >editor <<-\\EOF &&\n' span_id:553) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:554) (Token id: Id.Lit_Chars val: '\tsed -e "s/amend/older/g" < "$1" > "$1-"\n' span_id: 555 ) (Token id:Id.Lit_Chars val:'\tmv "$1-" "$1"\n' span_id:556) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:557) (Token id:Id.Lit_Chars val:'\tchmod 755 editor &&\n' span_id:558) (Token id:Id.Lit_Chars val:'\techo hula hula >file &&\n' span_id:559) (Token id:Id.Lit_Chars val:'\tEDITOR=./editor git commit -c HEAD^ -a\n' span_id:560) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'message from stdin' span_id:567))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:571) (Token id:Id.Lit_Chars val:'\techo silly new contents >file &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\techo commit message from stdin |\n' span_id:573) (Token id:Id.Lit_Chars val:'\tgit commit -F - -a\n' span_id:574) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'overriding author from command line' span_id:581))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:585) (Token id:Id.Lit_Chars val:'\techo gak >file &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\tgit commit -m author \\\n' span_id:587) (Token id: Id.Lit_Chars val: '\t\t--author "Rubber Duck <rduck@convoy.org>" -a >output 2>&1 &&\n' span_id: 588 ) (Token id:Id.Lit_Chars val:'\tgrep Rubber.Duck output\n' span_id:589) ) } ) (C {(test_expect_success)} {(PERL)} {(SQ (Token id:Id.Lit_Chars val:'interactive add' span_id:598))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:602) (Token id:Id.Lit_Chars val:'\techo 7 |\n' span_id:603) (Token id:Id.Lit_Chars val:'\tgit commit --interactive |\n' span_id:604) (Token id:Id.Lit_Chars val:'\tgrep "What now"\n' span_id:605) ) } ) (C {(test_expect_success)} {(PERL)} {(DQ ("commit --interactive doesn't change index if editor aborts"))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:618) (Token id:Id.Lit_Chars val:'\techo zoo >file &&\n' span_id:619) (Token id:Id.Lit_Chars val:'\ttest_must_fail git diff --exit-code >diff1 &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\t(echo u ; echo "*" ; echo q) |\n' span_id:621) (Token id:Id.Lit_Chars val:'\t(\n' span_id:622) (Token id:Id.Lit_Chars val:'\t\tEDITOR=: &&\n' span_id:623) (Token id:Id.Lit_Chars val:'\t\texport EDITOR &&\n' span_id:624) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git commit --interactive\n' span_id: 625 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:626) (Token id:Id.Lit_Chars val:'\tgit diff >diff2 &&\n' span_id:627) (Token id:Id.Lit_Chars val:'\tcompare_diff_patch diff1 diff2\n' span_id:628) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'editor not invoked if -F is given' span_id:635))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:639) (Token id:Id.Lit_Chars val:'\tcat >editor <<-\\EOF &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\t#!/bin/sh\n' span_id:641) (Token id:Id.Lit_Chars val:'\tsed -e s/good/bad/g <"$1" >"$1-"\n' span_id:642) (Token id:Id.Lit_Chars val:'\tmv "$1-" "$1"\n' span_id:643) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:644) (Token id:Id.Lit_Chars val:'\tchmod 755 editor &&\n' span_id:645) (Token id:Id.Lit_Chars val:'\n' span_id:646) (Token id:Id.Lit_Chars val:'\techo A good commit message. >msg &&\n' span_id:647) (Token id:Id.Lit_Chars val:'\techo moo >file &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\n' span_id:649) (Token id: Id.Lit_Chars val: '\tEDITOR=./editor git commit -a -F msg &&\n' span_id: 650 ) (Token id:Id.Lit_Chars val:'\tgit show -s --pretty=format:%s >subject &&\n' span_id:651) (Token id:Id.Lit_Chars val:'\tgrep -q good subject &&\n' span_id:652) (Token id:Id.Lit_Chars val:'\n' span_id:653) (Token id:Id.Lit_Chars val:'\techo quack >file &&\n' span_id:654) (Token id:Id.Lit_Chars val:'\techo Another good message. |\n' span_id:655) (Token id: Id.Lit_Chars val: '\tEDITOR=./editor git commit -a -F - &&\n' span_id: 656 ) (Token id:Id.Lit_Chars val:'\tgit show -s --pretty=format:%s >subject &&\n' span_id:657) (Token id:Id.Lit_Chars val:'\tgrep -q good subject\n' span_id:658) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'partial commit that involves removal (1)' span_id:665))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:669) (Token id:Id.Lit_Chars val:'\n' span_id:670) (Token id:Id.Lit_Chars val:'\tgit rm --cached file &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\tmv file elif &&\n' span_id:672) (Token id:Id.Lit_Chars val:'\tgit add elif &&\n' span_id:673) (Token id:Id.Lit_Chars val:'\tgit commit -m "Partial: add elif" elif &&\n' span_id:674) (Token id: Id.Lit_Chars val: '\tgit diff-tree --name-status HEAD^ HEAD >current &&\n' span_id: 675 ) (Token id:Id.Lit_Chars val:'\techo "A\telif" >expected &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:677) (Token id:Id.Lit_Chars val:'\n' span_id:678) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'partial commit that involves removal (2)' span_id:685))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:689) (Token id:Id.Lit_Chars val:'\n' span_id:690) (Token id: Id.Lit_Chars val: '\tgit commit -m "Partial: remove file" file &&\n' span_id: 691 ) (Token id:Id.Lit_Chars val:'\tgit diff-tree --name-status HEAD^ HEAD >current &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\techo "D\tfile" >expected &&\n' span_id:693) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:694) (Token id:Id.Lit_Chars val:'\n' span_id:695) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'partial commit that involves removal (3)' span_id:702))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:706) (Token id:Id.Lit_Chars val:'\n' span_id:707) (Token id:Id.Lit_Chars val:'\tgit rm --cached elif &&\n' span_id:708) (Token id:Id.Lit_Chars val:'\techo elif >elif &&\n' span_id:709) (Token id: Id.Lit_Chars val: '\tgit commit -m "Partial: modify elif" elif &&\n' span_id: 710 ) (Token id:Id.Lit_Chars val:'\tgit diff-tree --name-status HEAD^ HEAD >current &&\n' span_id:711) (Token id:Id.Lit_Chars val:'\techo "M\telif" >expected &&\n' span_id:712) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:713) (Token id:Id.Lit_Chars val:'\n' span_id:714) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend commit to fix author' span_id:721))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:725) (Token id:Id.Lit_Chars val:'\n' span_id:726) (Token id:Id.Lit_Chars val:'\toldtick=$GIT_AUTHOR_DATE &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:728) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:729) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD |\n' span_id:730) (Token id: Id.Lit_Chars val: '\tsed -e "s/author.*/author $author $oldtick/" \\\n' span_id: 731 ) (Token id: Id.Lit_Chars val: '\t\t-e "s/^\\(committer.*> \\).*$/\\1$GIT_COMMITTER_DATE/" > \\\n' span_id: 732 ) (Token id:Id.Lit_Chars val:'\t\texpected &&\n' span_id:733) (Token id: Id.Lit_Chars val: '\tgit commit --amend --author="$author" &&\n' span_id: 734 ) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD > current &&\n' span_id:735) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:736) (Token id:Id.Lit_Chars val:'\n' span_id:737) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend commit to fix date' span_id:744))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:748) (Token id:Id.Lit_Chars val:'\n' span_id:749) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:750) (Token id:Id.Lit_Chars val:'\tnewtick=$GIT_AUTHOR_DATE &&\n' span_id:751) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:752) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD |\n' span_id:753) (Token id: Id.Lit_Chars val: '\tsed -e "s/author.*/author $author $newtick/" \\\n' span_id: 754 ) (Token id: Id.Lit_Chars val: '\t\t-e "s/^\\(committer.*> \\).*$/\\1$GIT_COMMITTER_DATE/" > \\\n' span_id: 755 ) (Token id:Id.Lit_Chars val:'\t\texpected &&\n' span_id:756) (Token id: Id.Lit_Chars val: '\tgit commit --amend --date="$newtick" &&\n' span_id: 757 ) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD > current &&\n' span_id:758) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:759) (Token id:Id.Lit_Chars val:'\n' span_id:760) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit mentions forced date in output' span_id:767))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:771) (Token id: Id.Lit_Chars val: '\tgit commit --amend --date=2010-01-02T03:04:05 >output &&\n' span_id: 772 ) (Token id:Id.Lit_Chars val:'\tgrep "Date: *Sat Jan 2 03:04:05 2010" output\n' span_id:773) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit complains about completely bogus dates' span_id:780))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:784) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit --amend --date=seventeen\n' span_id: 785 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit --date allows approxidate' span_id:792))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:796) (Token id:Id.Lit_Chars val:'\tgit commit --amend \\\n' span_id:797) (Token id: Id.Lit_Chars val: '\t\t--date="midnight the 12th of october, anno domini 1979" &&\n' span_id: 798 ) (Token id:Id.Lit_Chars val:'\techo "Fri Oct 12 00:00:00 1979 +0000" >expect &&\n' span_id:799) (Token id:Id.Lit_Chars val:'\tgit log -1 --format=%ad >actual &&\n' span_id:800) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:801) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'sign off (1)' span_id:808))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) (Token id:Id.Lit_Chars val:'\n' span_id:813) (Token id:Id.Lit_Chars val:'\techo 1 >positive &&\n' span_id:814) (Token id:Id.Lit_Chars val:'\tgit add positive &&\n' span_id:815) (Token id:Id.Lit_Chars val:'\tgit commit -s -m "thank you" &&\n' span_id:816) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | sed -e "1,/^\\$/d" >actual &&\n' span_id: 817 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:818) (Token id:Id.Lit_Chars val:'\t\techo thank you\n' span_id:819) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:820) (Token id:Id.Lit_Chars val:'\t\tgit var GIT_COMMITTER_IDENT |\n' span_id:821) (Token id:Id.Lit_Chars val:'\t\tsed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"\n' span_id:822) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:823) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:824) (Token id:Id.Lit_Chars val:'\n' span_id:825) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'sign off (2)' span_id:832))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:836) (Token id:Id.Lit_Chars val:'\n' span_id:837) (Token id:Id.Lit_Chars val:'\techo 2 >positive &&\n' span_id:838) (Token id:Id.Lit_Chars val:'\tgit add positive &&\n' span_id:839) (Token id: Id.Lit_Chars val: '\texisting="Signed-off-by: Watch This <watchthis@example.com>" &&\n' span_id: 840 ) (Token id:Id.Lit_Chars val:'\tgit commit -s -m "thank you\n' span_id:841) (Token id:Id.Lit_Chars val:'\n' span_id:842) (Token id:Id.Lit_Chars val:'$existing" &&\n' span_id:843) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | sed -e "1,/^\\$/d" >actual &&\n' span_id: 844 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:845) (Token id:Id.Lit_Chars val:'\t\techo thank you\n' span_id:846) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:847) (Token id:Id.Lit_Chars val:'\t\techo $existing\n' span_id:848) (Token id:Id.Lit_Chars val:'\t\tgit var GIT_COMMITTER_IDENT |\n' span_id:849) (Token id: Id.Lit_Chars val: '\t\tsed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"\n' span_id: 850 ) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:851) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:852) (Token id:Id.Lit_Chars val:'\n' span_id:853) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'signoff gap' span_id:860))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:864) (Token id:Id.Lit_Chars val:'\n' span_id:865) (Token id:Id.Lit_Chars val:'\techo 3 >positive &&\n' span_id:866) (Token id:Id.Lit_Chars val:'\tgit add positive &&\n' span_id:867) (Token id:Id.Lit_Chars val:'\talt="Alt-RFC-822-Header: Value" &&\n' span_id:868) (Token id:Id.Lit_Chars val:'\tgit commit -s -m "welcome\n' span_id:869) (Token id:Id.Lit_Chars val:'\n' span_id:870) (Token id:Id.Lit_Chars val:'$alt" &&\n' span_id:871) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | sed -e "1,/^\\$/d" > actual &&\n' span_id: 872 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:873) (Token id:Id.Lit_Chars val:'\t\techo welcome\n' span_id:874) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:875) (Token id:Id.Lit_Chars val:'\t\techo $alt\n' span_id:876) (Token id:Id.Lit_Chars val:'\t\tgit var GIT_COMMITTER_IDENT |\n' span_id:877) (Token id: Id.Lit_Chars val: '\t\tsed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"\n' span_id: 878 ) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:879) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:880) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'signoff gap 2' span_id:887))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:891) (Token id:Id.Lit_Chars val:'\n' span_id:892) (Token id:Id.Lit_Chars val:'\techo 4 >positive &&\n' span_id:893) (Token id:Id.Lit_Chars val:'\tgit add positive &&\n' span_id:894) (Token id:Id.Lit_Chars val:'\talt="fixed: 34" &&\n' span_id:895) (Token id:Id.Lit_Chars val:'\tgit commit -s -m "welcome\n' span_id:896) (Token id:Id.Lit_Chars val:'\n' span_id:897) (Token id:Id.Lit_Chars val:'We have now\n' span_id:898) (Token id:Id.Lit_Chars val:'$alt" &&\n' span_id:899) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | sed -e "1,/^\\$/d" > actual &&\n' span_id: 900 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:901) (Token id:Id.Lit_Chars val:'\t\techo welcome\n' span_id:902) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:903) (Token id:Id.Lit_Chars val:'\t\techo We have now\n' span_id:904) (Token id:Id.Lit_Chars val:'\t\techo $alt\n' span_id:905) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:906) (Token id:Id.Lit_Chars val:'\t\tgit var GIT_COMMITTER_IDENT |\n' span_id:907) (Token id: Id.Lit_Chars val: '\t\tsed -e "s/>.*/>/" -e "s/^/Signed-off-by: /"\n' span_id: 908 ) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:909) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:910) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'multiple -m' span_id:917))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:921) (Token id:Id.Lit_Chars val:'\n' span_id:922) (Token id:Id.Lit_Chars val:'\t>negative &&\n' span_id:923) (Token id:Id.Lit_Chars val:'\tgit add negative &&\n' span_id:924) (Token id: Id.Lit_Chars val: '\tgit commit -m "one" -m "two" -m "three" &&\n' span_id: 925 ) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | sed -e "1,/^\\$/d" >actual &&\n' span_id: 926 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:927) (Token id:Id.Lit_Chars val:'\t\techo one\n' span_id:928) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:929) (Token id:Id.Lit_Chars val:'\t\techo two\n' span_id:930) (Token id:Id.Lit_Chars val:'\t\techo\n' span_id:931) (Token id:Id.Lit_Chars val:'\t\techo three\n' span_id:932) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:934) (Token id:Id.Lit_Chars val:'\n' span_id:935) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend commit to fix author' span_id:942))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:946) (Token id:Id.Lit_Chars val:'\n' span_id:947) (Token id:Id.Lit_Chars val:'\toldtick=$GIT_AUTHOR_DATE &&\n' span_id:948) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:950) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD |\n' span_id:951) (Token id: Id.Lit_Chars val: '\tsed -e "s/author.*/author $author $oldtick/" \\\n' span_id: 952 ) (Token id: Id.Lit_Chars val: '\t\t-e "s/^\\(committer.*> \\).*$/\\1$GIT_COMMITTER_DATE/" > \\\n' span_id: 953 ) (Token id:Id.Lit_Chars val:'\t\texpected &&\n' span_id:954) (Token id: Id.Lit_Chars val: '\tgit commit --amend --author="$author" &&\n' span_id: 955 ) (Token id:Id.Lit_Chars val:'\tgit cat-file -p HEAD > current &&\n' span_id:956) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:957) (Token id:Id.Lit_Chars val:'\n' span_id:958) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git commit <file> with dirty index' span_id:965))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) (Token id:Id.Lit_Chars val:'\techo tacocat > elif &&\n' span_id:970) (Token id:Id.Lit_Chars val:'\techo tehlulz > chz &&\n' span_id:971) (Token id:Id.Lit_Chars val:'\tgit add chz &&\n' span_id:972) (Token id:Id.Lit_Chars val:'\tgit commit elif -m "tacocat is a palindrome" &&\n' span_id:973) (Token id:Id.Lit_Chars val:'\tgit show --stat | grep elif &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\tgit diff --cached | grep chz\n' span_id:975) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'same tree (single parent)' span_id:982))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:986) (Token id:Id.Lit_Chars val:'\n' span_id:987) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:988) (Token id:Id.Lit_Chars val:'\ttest_must_fail git commit -m empty\n' span_id:989) (Token id:Id.Lit_Chars val:'\n' span_id:990) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'same tree (single parent) --allow-empty' span_id:997))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1001) (Token id:Id.Lit_Chars val:'\n' span_id:1002) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "forced empty" &&\n' span_id:1003) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | grep forced\n' span_id: 1004 ) (Token id:Id.Lit_Chars val:'\n' span_id:1005) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'same tree (merge and amend merge)' span_id:1012))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1016) (Token id:Id.Lit_Chars val:'\n' span_id:1017) (Token id:Id.Lit_Chars val:'\tgit checkout -b side HEAD^ &&\n' span_id:1018) (Token id:Id.Lit_Chars val:'\techo zero >zero &&\n' span_id:1019) (Token id:Id.Lit_Chars val:'\tgit add zero &&\n' span_id:1020) (Token id:Id.Lit_Chars val:'\tgit commit -m "add zero" &&\n' span_id:1021) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:1022) (Token id:Id.Lit_Chars val:'\n' span_id:1023) (Token id:Id.Lit_Chars val:'\tgit merge -s ours side -m "empty ok" &&\n' span_id:1024) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^ HEAD >actual &&\n' span_id:1025) (Token id:Id.Lit_Chars val:'\t: >expected &&\n' span_id:1026) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1027) (Token id:Id.Lit_Chars val:'\n' span_id:1028) (Token id: Id.Lit_Chars val: '\tgit commit --amend -m "empty really ok" &&\n' span_id: 1029 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^ HEAD >actual &&\n' span_id:1030) (Token id:Id.Lit_Chars val:'\t: >expected &&\n' span_id:1031) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1032) (Token id:Id.Lit_Chars val:'\n' span_id:1033) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend using the message from another commit' span_id:1040))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1044) (Token id:Id.Lit_Chars val:'\n' span_id:1045) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1046) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1047) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "old commit" &&\n' span_id:1048) (Token id: Id.Lit_Chars val: '\told=$(git rev-parse --verify HEAD) &&\n' span_id: 1049 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1050) (Token id: Id.Lit_Chars val: '\tgit commit --allow-empty -m "new commit" &&\n' span_id: 1051 ) (Token id:Id.Lit_Chars val:'\tnew=$(git rev-parse --verify HEAD) &&\n' span_id:1052) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1053) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty --amend -C "$old" &&\n' span_id:1054) (Token id: Id.Lit_Chars val: '\tgit show --pretty="format:%ad %s" "$old" >expected &&\n' span_id: 1055 ) (Token id:Id.Lit_Chars val:'\tgit show --pretty="format:%ad %s" HEAD >actual &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1057) (Token id:Id.Lit_Chars val:'\n' span_id:1058) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'amend using the message from a commit named with tag' span_id: 1065 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1069) (Token id:Id.Lit_Chars val:'\n' span_id:1070) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1071) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1072) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "old commit" &&\n' span_id:1073) (Token id: Id.Lit_Chars val: '\told=$(git rev-parse --verify HEAD) &&\n' span_id: 1074 ) (Token id:Id.Lit_Chars val:'\tgit tag -a -m "tag on old" tagged-old HEAD &&\n' span_id:1075) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "new commit" &&\n' span_id:1077) (Token id: Id.Lit_Chars val: '\tnew=$(git rev-parse --verify HEAD) &&\n' span_id: 1078 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1079) (Token id: Id.Lit_Chars val: '\tgit commit --allow-empty --amend -C tagged-old &&\n' span_id: 1080 ) (Token id:Id.Lit_Chars val:'\tgit show --pretty="format:%ad %s" "$old" >expected &&\n' span_id:1081) (Token id: Id.Lit_Chars val: '\tgit show --pretty="format:%ad %s" HEAD >actual &&\n' span_id: 1082 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1083) (Token id:Id.Lit_Chars val:'\n' span_id:1084) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amend can copy notes' span_id:1091))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1095) (Token id:Id.Lit_Chars val:'\n' span_id:1096) (Token id:Id.Lit_Chars val:'\tgit config notes.rewrite.amend true &&\n' span_id:1097) (Token id: Id.Lit_Chars val: '\tgit config notes.rewriteRef "refs/notes/*" &&\n' span_id: 1098 ) (Token id:Id.Lit_Chars val:'\ttest_commit foo &&\n' span_id:1099) (Token id:Id.Lit_Chars val:'\tgit notes add -m"a note" &&\n' span_id:1100) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1101) (Token id:Id.Lit_Chars val:'\tgit commit --amend -m"new foo" &&\n' span_id:1102) (Token id:Id.Lit_Chars val:'\ttest "$(git notes show)" = "a note"\n' span_id:1103) (Token id:Id.Lit_Chars val:'\n' span_id:1104) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit a file whose name is a dash' span_id:1111))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1115) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1116) (Token id:Id.Lit_Chars val:'\tfor i in 1 2 3 4 5\n' span_id:1117) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:1118) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:1119) (Token id:Id.Lit_Chars val:'\tdone >./- &&\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tgit add ./- &&\n' span_id:1121) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1122) (Token id:Id.Lit_Chars val:'\tgit commit -m "add dash" >output </dev/null &&\n' span_id:1123) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep " changed, 5 insertions" output\n' span_id: 1124 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--only works on to-be-born branch' span_id:1131))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1135) (Token id: Id.Lit_Chars val: '\t# This test relies on having something in the index, as it\n' span_id: 1136 ) (Token id: Id.Lit_Chars val: '\t# would not otherwise actually prove much. So check this.\n' span_id: 1137 ) (Token id:Id.Lit_Chars val:'\ttest -n "$(git ls-files)" &&\n' span_id:1138) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan orphan &&\n' span_id:1139) (Token id:Id.Lit_Chars val:'\techo foo >newfile &&\n' span_id:1140) (Token id:Id.Lit_Chars val:'\tgit add newfile &&\n' span_id:1141) (Token id: Id.Lit_Chars val: '\tgit commit --only newfile -m"--only on unborn branch" &&\n' span_id: 1142 ) (Token id:Id.Lit_Chars val:'\techo newfile >expected &&\n' span_id:1143) (Token id: Id.Lit_Chars val: '\tgit ls-tree -r --name-only HEAD >actual &&\n' span_id: 1144 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1145) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dry-run with conflicts fixed from a merge' span_id:1152))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1156) (Token id: Id.Lit_Chars val: '\t# setup two branches with conflicting information\n' span_id: 1157 ) (Token id:Id.Lit_Chars val:'\t# in the same file, resolve the conflict,\n' span_id:1158) (Token id:Id.Lit_Chars val:'\t# call commit with --dry-run\n' span_id:1159) (Token id:Id.Lit_Chars val:'\techo "Initial contents, unimportant" >test-file &&\n' span_id:1160) (Token id:Id.Lit_Chars val:'\tgit add test-file &&\n' span_id:1161) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial commit" &&\n' span_id:1162) (Token id: Id.Lit_Chars val: '\techo "commit-1-state" >test-file &&\n' span_id: 1163 ) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 1" -i test-file &&\n' span_id:1164) (Token id:Id.Lit_Chars val:'\tgit tag commit-1 &&\n' span_id:1165) (Token id:Id.Lit_Chars val:'\tgit checkout -b branch-2 HEAD^1 &&\n' span_id:1166) (Token id: Id.Lit_Chars val: '\techo "commit-2-state" >test-file &&\n' span_id: 1167 ) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 2" -i test-file &&\n' span_id:1168) (Token id: Id.Lit_Chars val: '\t! $(git merge --no-commit commit-1) &&\n' span_id: 1169 ) (Token id:Id.Lit_Chars val:'\techo "commit-2-state" >test-file &&\n' span_id:1170) (Token id:Id.Lit_Chars val:'\tgit add test-file &&\n' span_id:1171) (Token id:Id.Lit_Chars val:'\tgit commit --dry-run &&\n' span_id:1172) (Token id: Id.Lit_Chars val: '\tgit commit -m "conflicts fixed from merge."\n' span_id: 1173 ) ) } ) (C {(test_done)}) ] )