annotate tests/test-push-checkheads-unpushed-D6.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 4441705b7111
children 34a46d48d24e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31989
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
1 ====================================
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
2 Testing head checking code: Case D-6
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
3 ====================================
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
4
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
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
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
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
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
7 some of the new one we push.
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
8
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
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.
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
10
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
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
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
12 TestCase 6: single changeset, superseeded then pruned (on a new changeset unpushed) changeset
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
13
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
14 This is a partial push variation of case B-6
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
15
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
16 .. old-state:
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
17 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
18 .. * 1 changeset branch
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
19 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
20 .. new-state:
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
21 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
22 .. * old branch is rewritten onto another one,
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
23 .. * the new version is then pruned.
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
24 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
25 .. expected-result:
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
26 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
27 .. * push denied
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
28 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
29 .. graph-summary:
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
30 ..
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
31 .. A ø⇠⊗ A'
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
32 .. | |
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
33 .. C ◔ | ○ B
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
34 .. \|/
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
35 .. ●
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
36
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
37 $ . $TESTDIR/testlib/push-checkheads-util.sh
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
38
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
39 Test setup
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
40 ----------
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
41
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
42 $ mkdir D6
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
43 $ cd D6
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
44 $ setuprepos
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
45 creating basic server and client repo
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
46 updating to branch default
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
47 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
48 $ cd client
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
49 $ hg up 0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
50 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
51 $ mkcommit B0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
52 created new head
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
53 $ mkcommit A1
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
54 $ hg up '0'
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
55 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
56 $ mkcommit C0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
57 created new head
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
58 $ 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: 31989
diff changeset
59 obsoleted 1 changesets
31989
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
60 $ hg debugobsolete --record-parents `getid "desc(A1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 31989
diff changeset
61 obsoleted 1 changesets
31989
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
62 $ hg log -G --hidden
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
63 @ 0f88766e02d6 (draft): C0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
64 |
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
65 | x ba93660aff8d (draft): A1
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
66 | |
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
67 | o 74ff5441d343 (draft): B0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
68 |/
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
69 | x 8aaa48160adc (draft): A0
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
70 |/
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
71 o 1e4be0697311 (public): root
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
72
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
73
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
74 Actual testing
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
75 --------------
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
76
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
77 $ hg push --rev 'desc(C0)'
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 33542
diff changeset
78 pushing to $TESTTMP/D6/server
31989
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
79 searching for changes
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
80 abort: push creates new remote head 0f88766e02d6!
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
81 (merge or see 'hg help push' for details about pushing new heads)
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
82 [255]
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
83
85a22bc03d58 obsolescence: add test for the "branch replacement" logic during push, case D6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
84 $ cd ../..