#!/bin/sh global test_description := ''git svn authorship'' source ./lib-git-svn.sh test_expect_success 'setup svn repository' ' svn_cmd checkout "$svnrepo" work.svn && ( cd work.svn && echo >file svn_cmd add file svn_cmd commit -m "first commit" file ) ' test_expect_success 'interact with it via git svn' ' mkdir work.git && ( cd work.git && git svn init "$svnrepo" git svn fetch && echo modification >file && test_tick && git commit -a -m second && test_tick && git svn dcommit && echo "further modification" >file && test_tick && git commit -a -m third && test_tick && git svn --add-author-from dcommit && echo "yet further modification" >file && test_tick && git commit -a -m fourth && test_tick && git svn --add-author-from --use-log-author dcommit && git log && git show -s HEAD^^ >../actual.2 && git show -s HEAD^ >../actual.3 && git show -s HEAD >../actual.4 ) && # Make sure that --add-author-from without --use-log-author # did not affect the authorship information myself=$(grep "^Author: " actual.2) && unaffected=$(grep "^Author: " actual.3) && test "z$myself" = "z$unaffected" && # Make sure lack of --add-author-from did not add cruft ! grep "^ From: A U Thor " actual.2 && # Make sure --add-author-from added cruft grep "^ From: A U Thor " actual.3 && grep "^ From: A U Thor " actual.4 && # Make sure --add-author-from with --use-log-author affected # the authorship information grep "^Author: A U Thor " actual.4 && # Make sure there are no commit messages with excess blank lines test $(grep "^ " actual.2 | wc -l) = 3 && test $(grep "^ " actual.3 | wc -l) = 5 && test $(grep "^ " actual.4 | wc -l) = 5 && # Make sure there are no svn commit messages with excess blank lines ( cd work.svn && svn_cmd up && test $(svn_cmd log -r2:2 | wc -l) = 5 && test $(svn_cmd log -r4:4 | wc -l) = 7 ) ' test_done (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"git svn authorship">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./lib-git-svn.sh)}) (C {(test_expect_success)} {(SQ <"setup svn repository">)} { (SQ <"\n"> <"\tsvn_cmd checkout \"$svnrepo\" work.svn &&\n"> <"\t(\n"> <"\t\tcd work.svn &&\n"> <"\t\techo >file\n"> <"\t\tsvn_cmd add file\n"> <"\t\tsvn_cmd commit -m \"first commit\" file\n"> <"\t)\n"> ) } ) (C {(test_expect_success)} {(SQ <"interact with it via git svn">)} { (SQ <"\n"> <"\tmkdir work.git &&\n"> <"\t(\n"> <"\t\tcd work.git &&\n"> <"\t\tgit svn init \"$svnrepo\"\n"> <"\t\tgit svn fetch &&\n"> <"\n"> <"\t\techo modification >file &&\n"> <"\t\ttest_tick &&\n"> <"\t\tgit commit -a -m second &&\n"> <"\n"> <"\t\ttest_tick &&\n"> <"\t\tgit svn dcommit &&\n"> <"\n"> <"\t\techo \"further modification\" >file &&\n"> <"\t\ttest_tick &&\n"> <"\t\tgit commit -a -m third &&\n"> <"\n"> <"\t\ttest_tick &&\n"> <"\t\tgit svn --add-author-from dcommit &&\n"> <"\n"> <"\t\techo \"yet further modification\" >file &&\n"> <"\t\ttest_tick &&\n"> <"\t\tgit commit -a -m fourth &&\n"> <"\n"> <"\t\ttest_tick &&\n"> <"\t\tgit svn --add-author-from --use-log-author dcommit &&\n"> <"\n"> <"\t\tgit log &&\n"> <"\n"> <"\t\tgit show -s HEAD^^ >../actual.2 &&\n"> <"\t\tgit show -s HEAD^ >../actual.3 &&\n"> <"\t\tgit show -s HEAD >../actual.4\n"> <"\n"> <"\t) &&\n"> <"\n"> <"\t# Make sure that --add-author-from without --use-log-author\n"> <"\t# did not affect the authorship information\n"> <"\tmyself=$(grep \"^Author: \" actual.2) &&\n"> <"\tunaffected=$(grep \"^Author: \" actual.3) &&\n"> <"\ttest \"z$myself\" = \"z$unaffected\" &&\n"> <"\n"> <"\t# Make sure lack of --add-author-from did not add cruft\n"> <"\t! grep \"^ From: A U Thor \" actual.2 &&\n"> <"\n"> <"\t# Make sure --add-author-from added cruft\n"> <"\tgrep \"^ From: A U Thor \" actual.3 &&\n"> <"\tgrep \"^ From: A U Thor \" actual.4 &&\n"> <"\n"> <"\t# Make sure --add-author-from with --use-log-author affected\n"> <"\t# the authorship information\n"> <"\tgrep \"^Author: A U Thor \" actual.4 &&\n"> <"\n"> <"\t# Make sure there are no commit messages with excess blank lines\n"> <"\ttest $(grep \"^ \" actual.2 | wc -l) = 3 &&\n"> <"\ttest $(grep \"^ \" actual.3 | wc -l) = 5 &&\n"> <"\ttest $(grep \"^ \" actual.4 | wc -l) = 5 &&\n"> <"\n"> <"\t# Make sure there are no svn commit messages with excess blank lines\n"> <"\t(\n"> <"\t\tcd work.svn &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\t\n"> <"\t\ttest $(svn_cmd log -r2:2 | wc -l) = 5 &&\n"> <"\t\ttest $(svn_cmd log -r4:4 | wc -l) = 7\n"> <"\t)\n"> ) } ) (C {(test_done)}) ] )