Show More
@@ -7,7 +7,7 b'' | |||||
7 |
|
7 | |||
8 | from node import nullid, short |
|
8 | from node import nullid, short | |
9 | from i18n import _ |
|
9 | from i18n import _ | |
10 | import util, setdiscovery, treediscovery, phases |
|
10 | import util, setdiscovery, treediscovery, phases, obsolete | |
11 |
|
11 | |||
12 | def findcommonincoming(repo, remote, heads=None, force=False): |
|
12 | def findcommonincoming(repo, remote, heads=None, force=False): | |
13 | """Return a tuple (common, anyincoming, heads) used to identify the common |
|
13 | """Return a tuple (common, anyincoming, heads) used to identify the common | |
@@ -266,6 +266,7 b' def checkheads(repo, remote, outgoing, r' | |||||
266 | # error message, depending on unsynced status, is displayed. |
|
266 | # error message, depending on unsynced status, is displayed. | |
267 | error = None |
|
267 | error = None | |
268 | unsynced = False |
|
268 | unsynced = False | |
|
269 | allmissing = set(outgoing.missing) | |||
269 | for branch, heads in headssum.iteritems(): |
|
270 | for branch, heads in headssum.iteritems(): | |
270 | if heads[0] is None: |
|
271 | if heads[0] is None: | |
271 | # Maybe we should abort if we push more that one head |
|
272 | # Maybe we should abort if we push more that one head | |
@@ -274,8 +275,34 b' def checkheads(repo, remote, outgoing, r' | |||||
274 | if heads[2]: |
|
275 | if heads[2]: | |
275 | unsynced = True |
|
276 | unsynced = True | |
276 | oldhs = set(heads[0]) |
|
277 | oldhs = set(heads[0]) | |
277 | newhs = set(heads[1]) |
|
278 | candidate_newhs = set(heads[1]) | |
|
279 | # add unsynced data | |||
|
280 | oldhs.update(heads[2]) | |||
|
281 | candidate_newhs.update(heads[2]) | |||
278 | dhs = None |
|
282 | dhs = None | |
|
283 | if repo.obsstore: | |||
|
284 | # remove future heads which are actually obsolete by another | |||
|
285 | # pushed element: | |||
|
286 | # | |||
|
287 | # XXX There is several case this case does not handle properly | |||
|
288 | # | |||
|
289 | # (1) if <nh> is public, it won't be affected by obsolete marker | |||
|
290 | # and a new is created | |||
|
291 | # | |||
|
292 | # (2) if the new heads have ancestors which are not obsolete and | |||
|
293 | # not ancestors of any other heads we will have a new head too. | |||
|
294 | # | |||
|
295 | # This two case will be easy to handle for know changeset but much | |||
|
296 | # more tricky for unsynced changes. | |||
|
297 | newhs = set() | |||
|
298 | for nh in candidate_newhs: | |||
|
299 | for suc in obsolete.anysuccessors(repo.obsstore, nh): | |||
|
300 | if suc != nh and suc in allmissing: | |||
|
301 | break | |||
|
302 | else: | |||
|
303 | newhs.add(nh) | |||
|
304 | else: | |||
|
305 | newhs = candidate_newhs | |||
279 | if len(newhs) > len(oldhs): |
|
306 | if len(newhs) > len(oldhs): | |
280 | # strip updates to existing remote heads from the new heads list |
|
307 | # strip updates to existing remote heads from the new heads list | |
281 | dhs = list(newhs - bookmarkedheads - oldhs) |
|
308 | dhs = list(newhs - bookmarkedheads - oldhs) |
@@ -357,3 +357,50 b' no warning displayed' | |||||
357 | searching for changes |
|
357 | searching for changes | |
358 | no changes found |
|
358 | no changes found | |
359 | [1] |
|
359 | [1] | |
|
360 | ||||
|
361 | Do not warn about new head when the new head is a successors of a remote one | |||
|
362 | ||||
|
363 | $ hg glog | |||
|
364 | @ changeset: 5:6e572121998e | |||
|
365 | | tag: tip | |||
|
366 | | user: test | |||
|
367 | | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
368 | | summary: add original_e | |||
|
369 | | | |||
|
370 | x changeset: 4:7c694bff0650 | |||
|
371 | | user: test | |||
|
372 | | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
373 | | summary: add original_d | |||
|
374 | | | |||
|
375 | o changeset: 3:5601fb93a350 | |||
|
376 | | parent: 1:7c3bad9141dc | |||
|
377 | | user: test | |||
|
378 | | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
379 | | summary: add new_3_c | |||
|
380 | | | |||
|
381 | | o changeset: 2:245bde4270cd | |||
|
382 | |/ user: test | |||
|
383 | | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
384 | | summary: add original_c | |||
|
385 | | | |||
|
386 | o changeset: 1:7c3bad9141dc | |||
|
387 | | user: test | |||
|
388 | | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
389 | | summary: add b | |||
|
390 | | | |||
|
391 | o changeset: 0:1f0dee641bb7 | |||
|
392 | user: test | |||
|
393 | date: Thu Jan 01 00:00:00 1970 +0000 | |||
|
394 | summary: add a | |||
|
395 | ||||
|
396 | $ hg up -q 'desc(new_3_c)' | |||
|
397 | $ mkcommit obsolete_e | |||
|
398 | created new head | |||
|
399 | $ hg debugobsolete `getid 'original_e'` `getid 'obsolete_e'` | |||
|
400 | $ hg push ../tmpf | |||
|
401 | pushing to ../tmpf | |||
|
402 | searching for changes | |||
|
403 | adding changesets | |||
|
404 | adding manifests | |||
|
405 | adding file changes | |||
|
406 | added 1 changesets with 1 changes to 1 files (+1 heads) |
General Comments 0
You need to be logged in to leave comments.
Login now