Mercurial > hg
annotate tests/test-pull-branch.t @ 33284:b2670290eab4
followlines: join merge parents line ranges in blockdescendants() (issue5595)
In blockdescendants(), we had an assertion when line range of a merge
changeset was not consistent depending on which parent was considered for
computation. For instance, this might occur when file content (in lookup
range) is significantly different between parent branches of the merge as
demonstrated in added tests (where we almost completely rewrite the "baz" file
while also introducing similarities with its content in the other branch we
later merge to).
Now, in such case, we combine line ranges from all parents by storing the
envelope of both line ranges. This is conservative (the line range is
extended, possibly unnecessarily) but at least this should avoid missing
descendants with changes in a range that would fall in that of one parent but
not in another one (the case of "baz: narrow change (2->2+)" changeset in
tests).
author | Denis Laxalde <denis.laxalde@logilab.fr> |
---|---|
date | Wed, 05 Jul 2017 13:54:53 +0200 |
parents | 1b5c61d38a52 |
children | eb586ed5d8ce |
rev | line source |
---|---|
12279 | 1 $ hg init t |
2 $ cd t | |
3 $ echo 1 > foo | |
4 $ hg ci -Am1 # 0 | |
5 adding foo | |
6 $ hg branch branchA | |
7 marked working directory as branch branchA | |
15615 | 8 (branches are permanent and global, did you want a bookmark?) |
12279 | 9 $ echo a1 > foo |
10 $ hg ci -ma1 # 1 | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
11 |
12279 | 12 $ cd .. |
13 $ hg init tt | |
14 $ cd tt | |
15 $ hg pull ../t | |
16 pulling from ../t | |
17 requesting all changes | |
18 adding changesets | |
19 adding manifests | |
20 adding file changes | |
21 added 2 changesets with 2 changes to 1 files | |
22 (run 'hg update' to get a working copy) | |
23 $ hg up branchA | |
24 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
25 |
12279 | 26 $ cd ../t |
27 $ echo a2 > foo | |
28 $ hg ci -ma2 # 2 | |
29 | |
30 Create branch B: | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
31 |
12279 | 32 $ hg up 0 |
33 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
34 $ hg branch branchB | |
35 marked working directory as branch branchB | |
36 $ echo b1 > foo | |
37 $ hg ci -mb1 # 3 | |
38 | |
39 $ cd ../tt | |
40 | |
41 A new branch is there | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
42 |
12279 | 43 $ hg pull -u ../t |
44 pulling from ../t | |
45 searching for changes | |
46 adding changesets | |
47 adding manifests | |
48 adding file changes | |
49 added 2 changesets with 2 changes to 1 files (+1 heads) | |
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
51 | |
52 Develop both branches: | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
53 |
12279 | 54 $ cd ../t |
55 $ hg up branchA | |
56 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
57 $ echo a3 > foo | |
58 $ hg ci -ma3 # 4 | |
59 $ hg up branchB | |
60 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
61 $ echo b2 > foo | |
62 $ hg ci -mb2 # 5 | |
63 | |
64 $ cd ../tt | |
65 | |
66 Should succeed, no new heads: | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
67 |
12279 | 68 $ hg pull -u ../t |
69 pulling from ../t | |
70 searching for changes | |
71 adding changesets | |
72 adding manifests | |
73 adding file changes | |
74 added 2 changesets with 2 changes to 1 files | |
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
76 | |
77 Add a head on other branch: | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
78 |
12279 | 79 $ cd ../t |
80 $ hg up branchA | |
81 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
82 $ echo a4 > foo | |
83 $ hg ci -ma4 # 6 | |
84 $ hg up branchB | |
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
86 $ echo b3.1 > foo | |
87 $ hg ci -m b3.1 # 7 | |
88 $ hg up 5 | |
89 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
90 $ echo b3.2 > foo | |
91 $ hg ci -m b3.2 # 8 | |
92 created new head | |
93 | |
94 $ cd ../tt | |
95 | |
96 Should succeed because there is only one head on our branch: | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
97 |
12279 | 98 $ hg pull -u ../t |
99 pulling from ../t | |
100 searching for changes | |
101 adding changesets | |
102 adding manifests | |
103 adding file changes | |
104 added 3 changesets with 3 changes to 1 files (+1 heads) | |
105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
106 |
12279 | 107 $ cd ../t |
108 $ hg up -C branchA | |
109 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
110 $ echo a5.1 > foo | |
111 $ hg ci -ma5.1 # 9 | |
112 $ hg up 6 | |
113 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
114 $ echo a5.2 > foo | |
115 $ hg ci -ma5.2 # 10 | |
116 created new head | |
117 $ hg up 7 | |
118 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
119 $ echo b4.1 > foo | |
120 $ hg ci -m b4.1 # 11 | |
121 $ hg up -C 8 | |
122 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
123 $ echo b4.2 > foo | |
124 $ hg ci -m b4.2 # 12 | |
7372
e17dbf140035
pull: update to branch tip if there is only one head on the current branch
Benoit Allard <benoit@aeteurope.nl>
parents:
diff
changeset
|
125 |
12279 | 126 $ cd ../tt |
127 | |
128 $ hg pull -u ../t | |
129 pulling from ../t | |
130 searching for changes | |
131 adding changesets | |
132 adding manifests | |
133 adding file changes | |
134 added 4 changesets with 4 changes to 1 files (+1 heads) | |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
13804
diff
changeset
|
135 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
32698
1b5c61d38a52
update: show the commit to which we updated in case of multiple heads (BC)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28030
diff
changeset
|
136 updated to "d740e1a584e7: a5.2" |
28030
ca2a0a654f54
update: warn about other topological head in pull and unbundle
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25295
diff
changeset
|
137 1 other heads for branch "branchA" |
12279 | 138 |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
139 Make changes on new branch on tt |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
140 |
14485
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
13804
diff
changeset
|
141 $ hg up 6 |
610873cf064a
Make pull -u behave like pull && update
Brendan Cully <brendan@kublai.com>
parents:
13804
diff
changeset
|
142 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
143 $ hg branch branchC |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
144 marked working directory as branch branchC |
17345
4f8054d3171b
check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
145 $ echo b1 > bar |
13804
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
146 $ hg ci -Am "commit on branchC on tt" |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
147 adding bar |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
148 |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
149 Make changes on default branch on t |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
150 |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
151 $ cd ../t |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
152 $ hg up -C default |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
153 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
17345
4f8054d3171b
check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents:
16913
diff
changeset
|
154 $ echo a1 > bar |
13804
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
155 $ hg ci -Am "commit on default on t" |
13803
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
156 adding bar |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
157 |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
158 Pull branchC from tt |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
159 |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
160 $ hg pull ../tt |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
161 pulling from ../tt |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
162 searching for changes |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
163 adding changesets |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
164 adding manifests |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
165 adding file changes |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
166 added 1 changesets with 1 changes to 1 files (+1 heads) |
e380964d53f8
pull: don't suggest running hg merge when new heads are on different branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
12279
diff
changeset
|
167 (run 'hg heads' to see heads) |
13804
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
168 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
169 Make changes on default and branchC on tt |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
170 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
171 $ cd ../tt |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
172 $ hg pull ../t |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
173 pulling from ../t |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
174 searching for changes |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
175 adding changesets |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
176 adding manifests |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
177 adding file changes |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
178 added 1 changesets with 1 changes to 1 files (+1 heads) |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
179 (run 'hg heads' to see heads) |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
180 $ hg up -C default |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
181 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
182 $ echo a1 > bar1 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
183 $ hg ci -Am "commit on default on tt" |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
184 adding bar1 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
185 $ hg up branchC |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
186 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
187 $ echo a1 > bar2 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
188 $ hg ci -Am "commit on branchC on tt" |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
189 adding bar2 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
190 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
191 Make changes on default and branchC on t |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
192 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
193 $ cd ../t |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
194 $ hg up default |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
195 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
196 $ echo a1 > bar3 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
197 $ hg ci -Am "commit on default on t" |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
198 adding bar3 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
199 $ hg up branchC |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
200 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
201 $ echo a1 > bar4 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
202 $ hg ci -Am "commit on branchC on tt" |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
203 adding bar4 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
204 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
205 Pull from tt |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
206 |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
207 $ hg pull ../tt |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
208 pulling from ../tt |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
209 searching for changes |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
210 adding changesets |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
211 adding manifests |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
212 adding file changes |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
213 added 2 changesets with 2 changes to 2 files (+2 heads) |
7dc2bd4c0dc8
pull: new output message when there are multiple branches
Kevin Berridge <kevin.w.berridge@gmail.com>
parents:
13803
diff
changeset
|
214 (run 'hg heads .' to see heads, 'hg merge' to merge) |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15615
diff
changeset
|
215 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
15615
diff
changeset
|
216 $ cd .. |