5 t-dependencies git-buildpackage libfile-fnmatch-perl faketime
7 t-setup-import gdr-convert-gbp
11 t-dgit setup-mergechangelogs
16 local m=$(git symbolic-ref HEAD)
17 t-some-changes "subcommands $m 1"
19 t-dgit -wgf quilt-fixup
22 t-some-changes "subcommands $m 2"
26 git checkout -b stitched-laundered master
29 t-gdr-good stitched HEAD
31 git checkout -b stitched-mixed master
34 git checkout -b unstitched-laundered master
39 git checkout -b unstitched-mixed master
50 for startbranch in {stitched,unstitched}-{laundered,mixed}; do
51 work="work-$subcmd-$startbranch"
53 : "---------- $subcmd $startbranch ----------"
55 git for-each-ref "**/$startbranch"{,/**} \
56 --format='create %(refname) %(objectname)' \
57 | sed "s/$startbranch/$work/" \
58 | git update-ref --stdin
61 checkletters=$1; shift
68 case "$checkletters" in
70 fail "$checkletters" # for debugging
74 case "$checkletters" in
77 t-git-debrebase $xopts $subcmd
78 t-git-debrebase $xopts --noop-ok $subcmd
81 t-expect-fail "$checkletters" \
82 t-git-debrebase $xopts $subcmd
86 t-git-debrebase $xopts $subcmd
90 peel=peel-$subcmd-$startbranch
92 t-clean-on-branch $peel
94 : "---------- $subcmd $startbranch $checkletters ----------"
96 while [ "x$checkletters" != x ]; do
97 : "---- $subcmd $startbranch ...$checkletters ----"
98 make_check "$checkletters"
99 checkletters="${checkletters#?}"
105 next_checkletter () {
106 checkletters="${checkletters#?}"
113 t-refs-same refs/heads/$before refs/heads/$work
117 t-refs-same refs/heads/$before refs/ffq-prev/heads/$work
121 t-git-get-ref refs/ffq-prev/heads/$work
122 t-refs-notexist refs/debrebase-last/heads/$work
126 t-refs-same refs/ffq-prev/heads/$work \
127 refs/ffq-prev/heads/$startbranch
128 t-refs-notexist refs/debrebase-last/heads/$work
131 t-refs-notexist refs/ffq-prev/heads/$work
133 t-refs-same refs/debrebase-last/heads/$work \
134 refs/debrebase-last/heads/$startbranch
135 t-has-ancestor HEAD refs/debrebase-last/heads/$work
138 t-refs-notexist refs/ffq-prev/heads/$work
139 t-refs-same-start refs/debrebase-last/heads/$work
141 git diff --quiet HEAD^1
142 git diff HEAD^2 | grep $startbranch
143 git reset --hard HEAD^1
146 t-dgit -wgf --quilt=nofix quilt-fixup
147 git diff HEAD~ debian/patches | egrep .
148 git diff --quiet HEAD~ -- ':.' ':!debian/patches'
149 git reset --hard HEAD~
152 git diff --quiet HEAD refs/heads/$before -- ':.' ':!debian/patches'
156 git diff --quiet HEAD refs/heads/$before
159 t-has-ancestor HEAD refs/heads/$before
167 Ec="F:No ongoing git-debrebase session"
168 Ep="F:Patch export produced patch amendments"
171 # stitched? st'd st'd unst'd unst'd
172 # laundered? laund'd mixed laund'd mixed
174 # "mixed" means an out of order branch
175 # containing mixed commits and patch additions,
176 # but which needs even more patches
178 subcmd '' Ult Ull Vlt Vl
179 subcmd stitch Ns Nu Sltf Stf
180 subcmd prepush Ns Nu Sltf Stf
181 subcmd quick ns Sl Sltf Sl
182 subcmd conclude "$Ec" "$Ec" Sltf Sl
183 subcmd make-patches sPft "$Ep" uPft "$Ep"
184 #subcmd dgit-upload-hook Psft "$Ep" SPft "$Ep"
186 # result codes, each one is a check:
187 # E:$pat } this is an error (must come first)
188 # F:$pat } arg is passed to expect-fail
190 # XX crash out of script for manual debugging
192 # N this is a noop, error unless --noop-ok
193 # n this is a silent noop
194 # both of these imply tf; but, specify also one of u s
196 # should normally specify one of these:
197 # U just unstiched: ffq-prev is exactly previous HEAD; implies u
198 # u result is unstitched
199 # V ffq-prev remains unchanged; implies also u
200 # s result is stitched, debrebase-last exists and is unchanged
201 # S result is stitch just made, remaining letters apply to result~
203 # P result is add-patches, remaining letters apply to result~
205 # should normally specify one or both of these:
206 # l result is laundered, tree is same as before minus d/patches
207 # t tree is exactly same as before
209 # f result is ff from previous HEAD