chiark / gitweb /
git-debrebase: merge: Actually record merge resolutions
[dgit.git] / tests / tests / gdr-merge-conflicts
index afdd014f2bcc67163eb7140704c917df3ec87ccb..12e7055aaa2f59f8daec382d885b6231af641b30 100755 (executable)
@@ -8,7 +8,25 @@ t-dependencies NO-DGIT GDR
 t-tstunt-parsechangelog
 t-setup-import gdr-convert-gbp-noarchive
 
-: 'do a simple test'
+export GIT_DEBREBASE_EXPERIMENTAL_MERGE=1
+
+wreckage-before () {
+       junkref=refs/debrebase/wreckage/junk
+       git update-ref $junkref v2.1
+}
+
+wreckage-after () {
+       test '' = "$(t-git-get-ref-exact $junkref)"
+       git for-each-ref refs/debrebase/wreckage | egrep .
+}
+
+no-wreckage () {
+       if git for-each-ref refs/debrebase/wreckage | egrep .; then
+               fail wreckage
+       fi
+}
+
+: ----- prepare the baseline -----
 
 cd $p
 
@@ -18,26 +36,87 @@ git tag v2.1 upstream
 t-some-changes before
 t-git-debrebase quick
 
+: ===== early failure in walk =====
+
+: ----- prepare other -----
+
 git checkout -b other
 t-some-changes other '' -other
 
+git branch other-before-new-upstream
+
+t-git-debrebase new-upstream 2.1
+t-git-next-date
+
+: ----- prepare master -----
+
+git checkout master
+t-git-debrebase new-upstream 2.1
+t-git-next-date
+
+git branch master-before-merge
+
+: ----- make the merge -----
+
+git merge -s ours other
+
+# we have to do a little dance to make this not a pseudomerge
+t-git-next-date
+dch -a 'Merge, only conflict was in debian/changelog'
+t-dch-r-rune dch
+git commit -a --amend --no-edit
+
+wreckage-before
+
+t-expect-fail F:'divergent anchors' \
+t-git-debrebase
+
+wreckage-after
+
+: ===== late failure in apply =====
+
 git checkout other
+git reset --hard other-before-new-upstream
+
 echo other-upstream-confict >>docs/README
 git commit -m 'other-upstream-conflict' docs/README
 
 t-git-debrebase quick
 
+no-wreckage
+
+: ----- make the merge -----
+
 git checkout master
-t-git-debrebase new-upstream 2.1
+git reset --hard master-before-merge
 
 t-merge-conflicted-stripping-conflict-markers other docs/README
 
-export GIT_DEBREBASE_EXPERIMENTAL_MERGE=1
+: ----- expect failure -----
+
+wreckage-before
 
 t-expect-fail F:'docs/README' \
 t-git-debrebase
 
-# xxx want to test a nomerge from first walk analysis half
-# xxx want to check wrecknotes appear
+wreckage-after
+
+: ----- resolve the conflict -----
+
+# omg
+git checkout debrebase/wreckage/merged-patchqueue
+QUILT_PATCHES=debian/patches quilt push -a
+QUILT_PATCHES=debian/patches quilt refresh
+git add debian/patches
+git commit -m FIX
+git reset --hard
+git clean -xdff
+
+t-git-debrebase record-resolved-merge
+
+git checkout master
+
+#t-git-debrebase
+#t-gdr-good laundered
 
 t-ok