annotate tests/test-push-checkheads-unpushed-D2.t @ 41163:0101a35deae2

phabricator: warn if unable to amend, instead of aborting after posting There was a divergence in behavior here between obsolete and strip based amending. I first noticed the abort when testing outside of the test harness, but then had trouble recreating it here after reverting the code changes. It turns out, strip based amend was successfully amending the public commit after it was posted! It looks like the protection is in the `commit --amend` command, not in the underlying code that it calls. I considered doing a preflight check and aborting. But the locks are only acquired at the end, if amending, and this is too large a section of code to be wrapped in a maybe-it's-held-or-not context manager for my tastes. Additionally, some people do post-push reviews, and amending is the default behavior, so they shouldn't see a misleading error message. The lack of a 'Differential Revision' entry in the commit message breaks a {phabreview} test, so it had to be partially conditionalized.
author Matt Harbison <matt_harbison@yahoo.com>
date Sat, 05 Jan 2019 15:20:33 -0500
parents 89630d0b3e23
children 34a46d48d24e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
1 ====================================
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
2 Testing head checking code: Case D-2
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
3 ====================================
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
4
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
5 Mercurial checks for the introduction of new heads on push. Evolution comes
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
6 into play to detect if existing branches on the server are being replaced by
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
7 some of the new one we push.
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
8
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
9 This case is part of a series of tests checking this behavior.
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
10
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
11 Category D: remote head is "obs-affected" locally, but result is not part of the push
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
12 TestCase 1: remote branch has 2 changes, head is pruned, other is rewritten but result is not pushed
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
13
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
14 .. old-state:
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
15 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
16 .. * 1 changeset branch
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
17 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
18 .. new-state:
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
19 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
20 .. * old head is pruned
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
21 .. * 1 new branch succeeding to the other changeset in the old branch
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
22 .. * 1 new unrelated branch
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
23 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
24 .. expected-result:
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
25 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
26 .. * push allowed
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
27 .. * pushing only the unrelated branch: denied
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
28 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
29 .. graph-summary:
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
30 ..
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
31 .. B ⊗
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
32 .. |
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
33 .. A ø⇠○ A'
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
34 .. |/
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
35 .. | ◔ C
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
36 .. |/
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
37 .. ●
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
38
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
39 $ . $TESTDIR/testlib/push-checkheads-util.sh
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
40
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
41 Test setup
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
42 ----------
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
43
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
44 $ mkdir D2
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
45 $ cd D2
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
46 $ setuprepos
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
47 creating basic server and client repo
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
48 updating to branch default
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
49 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
50 $ cd server
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
51 $ mkcommit B0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
52 $ cd ../client
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
53 $ hg pull
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
54 pulling from $TESTTMP/D2/server
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
55 searching for changes
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
56 adding changesets
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
57 adding manifests
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
58 adding file changes
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
59 added 1 changesets with 1 changes to 1 files
39480
89630d0b3e23 phase: report number of non-public changeset alongside the new range
Boris Feld <boris.feld@octobus.net>
parents: 35709
diff changeset
60 new changesets d73caddc5533 (1 drafts)
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
61 (run 'hg update' to get a working copy)
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
62 $ hg up 0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
63 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
64 $ mkcommit A1
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
65 created new head
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
66 $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 31987
diff changeset
67 obsoleted 1 changesets
35709
1a09dad8b85a evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com>
parents: 35393
diff changeset
68 1 new orphan changesets
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
69 $ hg debugobsolete --record-parents `getid "desc(B0)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 31987
diff changeset
70 obsoleted 1 changesets
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
71 $ hg up 0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
72 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
73 $ mkcommit C0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
74 created new head
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
75 $ hg log -G --hidden
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
76 @ 0f88766e02d6 (draft): C0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
77 |
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
78 | o f6082bc4ffef (draft): A1
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
79 |/
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
80 | x d73caddc5533 (draft): B0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
81 | |
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
82 | x 8aaa48160adc (draft): A0
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
83 |/
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
84 o 1e4be0697311 (public): root
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
85
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
86
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
87 Actual testing
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
88 --------------
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
89
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
90 $ hg push --rev 'desc(C0)'
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
91 pushing to $TESTTMP/D2/server
31987
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
92 searching for changes
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
93 abort: push creates new remote head 0f88766e02d6!
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
94 (merge or see 'hg help push' for details about pushing new heads)
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
95 [255]
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
96
8823daaf4665 obsolescence: add test for the "branch replacement" logic during push, case D2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
97 $ cd ../..