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
76 t-expect-fail E:'snags: [0-9]* blockers' \
77 t-git-debrebase $xopts $subcmd
83 case "$checkletters" in
86 t-git-debrebase $xopts $subcmd
92 case "$checkletters" in
94 t-expect-fail "$checkletters" \
95 t-git-debrebase $xopts $subcmd
99 t-git-debrebase $xopts $subcmd
103 peel=peel-$subcmd-$startbranch
104 git checkout -b $peel
105 t-clean-on-branch $peel
107 : "---------- $subcmd $startbranch $checkletters ----------"
109 while [ "x$checkletters" != x ]; do
110 : "---- $subcmd $startbranch ...$checkletters ----"
111 make_check "$checkletters"
112 checkletters="${checkletters#?}"
118 next_checkletter () {
119 checkletters="${checkletters#?}"
126 t-refs-same refs/heads/$before refs/heads/$work
130 t-refs-same refs/heads/$before refs/ffq-prev/heads/$work
134 t-git-get-ref refs/ffq-prev/heads/$work
135 t-refs-notexist refs/debrebase-last/heads/$work
139 t-refs-same refs/ffq-prev/heads/$work \
140 refs/ffq-prev/heads/$startbranch
141 t-refs-notexist refs/debrebase-last/heads/$work
144 t-refs-notexist refs/ffq-prev/heads/$work
146 t-refs-same refs/debrebase-last/heads/$work \
147 refs/debrebase-last/heads/$startbranch
148 t-has-ancestor HEAD refs/debrebase-last/heads/$work
151 t-refs-notexist refs/ffq-prev/heads/$work
152 t-refs-same-start refs/debrebase-last/heads/$work
154 git diff --quiet HEAD^1
155 git diff HEAD^2 | grep $startbranch
156 git reset --hard HEAD^1
159 t-dgit -wgf --quilt=nofix quilt-fixup
160 git diff HEAD~ debian/patches | egrep .
161 git diff --quiet HEAD~ -- ':.' ':!debian/patches'
162 git reset --hard HEAD~
165 git diff --quiet HEAD refs/heads/$before -- ':.' ':!debian/patches'
169 git diff --quiet HEAD refs/heads/$before
172 t-has-ancestor HEAD refs/heads/$before
180 Ec="F:No ongoing git-debrebase session"
181 Ep="F:Patch export produced patch amendments"
184 # stitched? st'd st'd unst'd unst'd
185 # laundered? laund'd mixed laund'd mixed
187 # "mixed" means an out of order branch
188 # containing mixed commits and patch additions,
189 # but which needs even more patches
191 subcmd '' Ult Ull Vlt Vl
192 subcmd stitch Ns Nu Sltf Stf
193 subcmd prepush Ns Nu Sltf Stf
194 subcmd quick ns Sl Sltf Sl
195 subcmd conclude "$Ec" "$Ec" Sltf Sl
196 subcmd make-patches sPft "$Ep" uPft "$Ep"
197 #subcmd dgit-upload-hook Psft "$Ep" SPft "$Ep"
199 # result codes, each one is a check:
200 # E:$pat } this is an error (must come first)
201 # F:$pat } arg is passed to expect-fail
203 # X should fail due to snags, but succeed when forced
204 # XX crash out of script for manual debugging
206 # N this is a noop, error unless --noop-ok
207 # n this is a silent noop
208 # both of these imply tf; but, specify also one of u s
210 # should normally specify one of these:
211 # U just unstiched: ffq-prev is exactly previous HEAD; implies u
212 # u result is unstitched
213 # V ffq-prev remains unchanged; implies also u
214 # s result is stitched, debrebase-last exists and is unchanged
215 # S result is stitch just made, remaining letters apply to result~
217 # P result is add-patches, remaining letters apply to result~
219 # should normally specify one or both of these:
220 # l result is laundered, tree is same as before minus d/patches
221 # t tree is exactly same as before
223 # f result is ff from previous HEAD