# : ${GDR_TEST_DEBUG=-D} export GDR_TEST_DEBUG t-git-debrebase () { local gdr=${DGIT_GITDEBREBASE_TEST-git-debrebase} : ' {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{' $gdr $GDR_TEST_OPTS $GDR_TEST_DEBUG $t_gdr_xopts "$@" : '}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} ' } t-gdr-good () { local state=$1 local beforetag=$2 # say HEAD to skip this check # state should be one of # laundered # stitched # patches git diff --quiet ${beforetag-t.before} -- ':.' ':!debian/patches' local etype netype bwtip case $state in laundered) etype=Upstream bwtip=Y:`t-git-debrebase breakwater` ;; stitched) etype=Pseudomerge ;; pushed) etype=AddPatches; netype=Pseudomerge ;; esac t-git-debrebase analyse >../anal.check expect=`git rev-parse HEAD` exec <../anal.check local cid ctype info nparents while read cid ctype info; do : ===== $cid $ctype $info ===== test $cid = $expect local cetype=$etype if [ "x$ctype" = "x$etype" ]; then cetype=SAME; fi local parents="`git log -n1 --pretty=format:%P $cid`" expect="$parents" enparents=1 : "$ctype/$cetype" "$parents" case "$ctype/$cetype" in Pseudomerge/SAME) ;; Packaging/SAME) ;; Packaging/Upstream) ;; AddPatches/SAME) ;; Changelog/Packaging) ;; Changelog/Upstream) ;; Upstream/SAME) ;; BreakwaterUpstreamMerge/Upstream) ;; BreakwaterUpstreamMerge/Packaging) ;; *) fail "etype=$etype ctype=$ctype cetype=$cetype $cid" ;; esac case "$ctype/$etype" in Packaging/Upstream|\ Changelog/Upstream) if [ "x$bwtip" != x ]; then test "$bwtip" = "Y:$cid" bwtip='' fi esac case "$ctype" in Pseudomerge) expect=${info#Contributor=} expect=${expect%% *} enparents=2 git diff --quiet $expect..$cid etype=Upstream ;; Packaging) git diff --quiet $expect..$cid -- ':.' ':!debian' git diff --quiet $expect..$cid -- ':debian/patches' etype=Packaging ;; AddPatches) git diff --quiet $expect..$cid -- \ ':.' ':!debian/patches' etype=$netype netype=Upstream ;; Changelog) git diff --quiet $expect..$cid -- \ ':.' ':!debian/changelog' etype=Packaging ;; Upstream/SAME) git diff --quiet $expect..$cid -- ':debian' ;; BreakwaterUpstreamMerge) break ;; esac local cnparents=`printf "%s" "$parents" | wc -w` test $cnparents = $enparents case "$parents" in *"$expect"*) ;; *) fail 'unexpected parent' ;; esac done } t-some-changes () { local token=$1 t-git-next-date echo >>debian/zorkmid "// debian $token" git add debian/zorkmid git commit -m "DEBIAN add zorkmid ($token)" echo >>src.c "// upstream $token" git commit -a -m "UPSTREAM edit src.c ($token)" for f in debian/zorkmid src.c; do echo "// both! $token" >>$f git add $f done git commit -m "MIXED add both ($token)" t-git-next-date } t-make-new-upstream-tarball () { local uv=$1 git checkout make-upstream # leaves ust set to filename of orig tarball echo "upstream $uv" >>docs/README git commit -a -m "upstream $uv tarball" ust=example_$uv.orig.tar.gz git archive -o ../$ust --prefix=example-2.0/ make-upstream }