|
1 Check that obsolete properly strip heads |
|
2 $ cat > obs.py << EOF |
|
3 > import mercurial.obsolete |
|
4 > mercurial.obsolete._enabled = True |
|
5 > EOF |
|
6 $ cat >> $HGRCPATH << EOF |
|
7 > [phases] |
|
8 > # public changeset are not obsolete |
|
9 > publish=false |
|
10 > [ui] |
|
11 > logtemplate='{node|short} ({phase}) {desc|firstline}\n' |
|
12 > [extensions] |
|
13 > graphlog= |
|
14 > EOF |
|
15 $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH |
|
16 $ mkcommit() { |
|
17 > echo "$1" > "$1" |
|
18 > hg add "$1" |
|
19 > hg ci -m "add $1" |
|
20 > } |
|
21 $ getid() { |
|
22 > hg id --debug -ir "desc('$1')" |
|
23 > } |
|
24 |
|
25 |
|
26 $ hg init remote |
|
27 $ cd remote |
|
28 $ mkcommit base |
|
29 $ hg phase --public . |
|
30 $ cd .. |
|
31 $ cp -r remote base |
|
32 $ hg clone remote local |
|
33 updating to branch default |
|
34 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
35 $ cd local |
|
36 |
|
37 New head replaces old head |
|
38 ========================== |
|
39 |
|
40 setup |
|
41 |
|
42 $ mkcommit old |
|
43 $ hg push |
|
44 pushing to $TESTTMP/remote |
|
45 searching for changes |
|
46 adding changesets |
|
47 adding manifests |
|
48 adding file changes |
|
49 added 1 changesets with 1 changes to 1 files |
|
50 $ hg up -q '.^' |
|
51 $ mkcommit new |
|
52 created new head |
|
53 $ hg debugobsolete `getid old` `getid new` |
|
54 $ hg glog --hidden |
|
55 @ 71e3228bffe1 (draft) add new |
|
56 | |
|
57 | x c70b08862e08 (draft) add old |
|
58 |/ |
|
59 o b4952fcf48cf (public) add base |
|
60 |
|
61 $ cp -r ../remote ../backup1 |
|
62 |
|
63 old exists remotely as draft. It is obsoleted by new that we now push. |
|
64 Push should not warn about creating new head |
|
65 |
|
66 $ hg push |
|
67 pushing to $TESTTMP/remote |
|
68 searching for changes |
|
69 adding changesets |
|
70 adding manifests |
|
71 adding file changes |
|
72 added 1 changesets with 1 changes to 1 files (+1 heads) |
|
73 |
|
74 old head is obsolete but replacement in not pushed |
|
75 ================================================== |
|
76 |
|
77 setup |
|
78 |
|
79 $ rm -fr ../remote |
|
80 $ cp -r ../backup1 ../remote |
|
81 $ hg up -q '.^' |
|
82 $ mkcommit other |
|
83 created new head |
|
84 $ hg glog --hidden |
|
85 @ d7d41ccbd4de (draft) add other |
|
86 | |
|
87 | o 71e3228bffe1 (draft) add new |
|
88 |/ |
|
89 | x c70b08862e08 (draft) add old |
|
90 |/ |
|
91 o b4952fcf48cf (public) add base |
|
92 |
|
93 |
|
94 old exists remotely as draft. It is obsoleted by new but we don't push new. |
|
95 Push should abort on new head |
|
96 |
|
97 $ hg push -r 'desc("other")' |
|
98 pushing to $TESTTMP/remote |
|
99 searching for changes |
|
100 abort: push creates new remote head d7d41ccbd4de! |
|
101 (did you forget to merge? use push -f to force) |
|
102 [255] |