--- a/tests/test-obsolete-checkheads.t Fri Aug 24 16:52:45 2012 +0200
+++ b/tests/test-obsolete-checkheads.t Sun Aug 26 00:25:33 2012 +0200
@@ -159,3 +159,115 @@
abort: push creates new remote head d7d41ccbd4de!
(did you forget to merge? use push -f to force)
[255]
+
+
+
+Both precursors and successors are already know remotely. Descendant adds heads
+===============================================================================
+
+setup. (The obsolete marker is known locally only
+
+ $ cd ..
+ $ rm -rf local
+ $ hg clone remote local
+ updating to branch default
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd local
+ $ mkcommit old
+ old already tracked!
+ nothing changed
+ [1]
+ $ hg up -q '.^'
+ $ mkcommit new
+ created new head
+ $ hg push -f
+ pushing to $TESTTMP/remote
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files (+1 heads)
+ $ mkcommit desc1
+ $ hg up -q '.^'
+ $ mkcommit desc2
+ created new head
+ $ hg debugobsolete `getid old` `getid new`
+ $ hg glog --hidden
+ @ 5fe37041cc2b (draft) add desc2
+ |
+ | o a3ef1d111c5f (draft) add desc1
+ |/
+ o 71e3228bffe1 (draft) add new
+ |
+ | x c70b08862e08 (draft) add old
+ |/
+ o b4952fcf48cf (public) add base
+
+ $ hg glog --hidden -R ../remote
+ o 71e3228bffe1 (draft) add new
+ |
+ | o c70b08862e08 (draft) add old
+ |/
+ @ b4952fcf48cf (public) add base
+
+ $ cp -r ../remote ../backup2
+
+Push should not warn about adding new heads. We create one, but we'll delete
+one anyway.
+
+ $ hg push
+ pushing to $TESTTMP/remote
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files (+1 heads)
+
+
+Remote head is unknown but obsoleted by a local changeset
+=========================================================
+
+setup
+
+ $ rm -fr ../remote
+ $ cp -r ../backup1 ../remote
+ $ cd ..
+ $ rm -rf local
+ $ hg clone remote local -r 0
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cd local
+ $ mkcommit new
+ $ hg -R ../remote id --debug -r tip
+ c70b08862e0838ea6d7c59c85da2f1ed6c8d67da tip
+ $ hg id --debug -r tip
+ 71e3228bffe1886550777233d6c97bb5a6b2a650 tip
+ $ hg debugobsolete c70b08862e0838ea6d7c59c85da2f1ed6c8d67da 71e3228bffe1886550777233d6c97bb5a6b2a650
+ $ hg glog --hidden
+ @ 71e3228bffe1 (draft) add new
+ |
+ o b4952fcf48cf (public) add base
+
+ $ hg glog --hidden -R ../remote
+ o c70b08862e08 (draft) add old
+ |
+ @ b4952fcf48cf (public) add base
+
+
+Push should not complain about new heads.
+
+It should not complain about "unsynced remote changes!" either but that's not
+handled yet.
+
+ $ hg push --traceback
+ pushing to $TESTTMP/remote
+ searching for changes
+ note: unsynced remote changes!
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files (+1 heads)