Show More
@@ -1554,21 +1554,29 b' class localrepository(repo.repository):' | |||||
1554 | clend = len(self.changelog) |
|
1554 | clend = len(self.changelog) | |
1555 | added = [self.changelog.node(r) for r in xrange(clstart, clend)] |
|
1555 | added = [self.changelog.node(r) for r in xrange(clstart, clend)] | |
1556 |
|
1556 | |||
|
1557 | # compute target subset | |||
|
1558 | if heads is None: | |||
|
1559 | # We pulled every thing possible | |||
|
1560 | # sync on everything common | |||
|
1561 | subset = common + added | |||
|
1562 | else: | |||
|
1563 | # We pulled a specific subset | |||
|
1564 | # sync on this subset | |||
|
1565 | subset = heads | |||
1557 |
|
1566 | |||
1558 | # Get remote phases data from remote |
|
1567 | # Get remote phases data from remote | |
1559 | remotephases = remote.listkeys('phases') |
|
1568 | remotephases = remote.listkeys('phases') | |
1560 | publishing = bool(remotephases.get('publishing', False)) |
|
1569 | publishing = bool(remotephases.get('publishing', False)) | |
1561 | if remotephases and not publishing: |
|
1570 | if remotephases and not publishing: | |
1562 | # remote is new and unpublishing |
|
1571 | # remote is new and unpublishing | |
1563 | subset = common + added |
|
|||
1564 | pheads, _dr = phases.analyzeremotephases(self, subset, |
|
1572 | pheads, _dr = phases.analyzeremotephases(self, subset, | |
1565 | remotephases) |
|
1573 | remotephases) | |
1566 | phases.advanceboundary(self, phases.public, pheads) |
|
1574 | phases.advanceboundary(self, phases.public, pheads) | |
1567 |
phases.advanceboundary(self, phases.draft, |
|
1575 | phases.advanceboundary(self, phases.draft, subset) | |
1568 | else: |
|
1576 | else: | |
1569 | # Remote is old or publishing all common changesets |
|
1577 | # Remote is old or publishing all common changesets | |
1570 | # should be seen as public |
|
1578 | # should be seen as public | |
1571 |
phases.advanceboundary(self, phases.public, |
|
1579 | phases.advanceboundary(self, phases.public, subset) | |
1572 | finally: |
|
1580 | finally: | |
1573 | lock.release() |
|
1581 | lock.release() | |
1574 |
|
1582 | |||
@@ -1652,11 +1660,35 b' class localrepository(repo.repository):' | |||||
1652 | # we return an integer indicating remote head count change |
|
1660 | # we return an integer indicating remote head count change | |
1653 | ret = remote.addchangegroup(cg, 'push', self.url()) |
|
1661 | ret = remote.addchangegroup(cg, 'push', self.url()) | |
1654 |
|
1662 | |||
1655 | cheads = outgoing.commonheads[:] |
|
|||
1656 | if ret: |
|
1663 | if ret: | |
1657 |
# push succeed, synchonize |
|
1664 | # push succeed, synchonize target of the push | |
1658 | # this is a no-op if there was nothing to push |
|
1665 | cheads = outgoing.missingheads | |
1659 | cheads += outgoing.missingheads |
|
1666 | elif revs is None: | |
|
1667 | # All out push fails. synchronize all common | |||
|
1668 | cheads = outgoing.commonheads | |||
|
1669 | else: | |||
|
1670 | # I want cheads = heads(::missingheads and ::commonheads) | |||
|
1671 | # (missingheads is revs with secret changeset filtered out) | |||
|
1672 | # | |||
|
1673 | # This can be expressed as: | |||
|
1674 | # cheads = ( (missingheads and ::commonheads) | |||
|
1675 | # + (commonheads and ::missingheads))" | |||
|
1676 | # ) | |||
|
1677 | # | |||
|
1678 | # while trying to push we already computed the following: | |||
|
1679 | # common = (::commonheads) | |||
|
1680 | # missing = ((commonheads::missingheads) - commonheads) | |||
|
1681 | # | |||
|
1682 | # We can pick: | |||
|
1683 | # * missingheads part of comon (::commonheads) | |||
|
1684 | common = set(outgoing.common) | |||
|
1685 | cheads = [n for node in revs if n in common] | |||
|
1686 | # and | |||
|
1687 | # * commonheads parents on missing | |||
|
1688 | rvset = repo.revset('%ln and parents(roots(%ln))', | |||
|
1689 | outgoing.commonheads, | |||
|
1690 | outgoing.missing) | |||
|
1691 | cheads.extend(c.node() for c in rvset) | |||
1660 | # even when we don't push, exchanging phase data is useful |
|
1692 | # even when we don't push, exchanging phase data is useful | |
1661 | remotephases = remote.listkeys('phases') |
|
1693 | remotephases = remote.listkeys('phases') | |
1662 | if not remotephases: # old server or public only repo |
|
1694 | if not remotephases: # old server or public only repo |
@@ -179,7 +179,6 b' pushkey hook' | |||||
179 | pushing to ../a |
|
179 | pushing to ../a | |
180 | searching for changes |
|
180 | searching for changes | |
181 | no changes found |
|
181 | no changes found | |
182 | pushkey hook: HG_KEY=07f3376c1e655977439df2a814e3cc14b27abac2 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1 |
|
|||
183 | exporting bookmark foo |
|
182 | exporting bookmark foo | |
184 | pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 |
|
183 | pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 | |
185 | $ cd ../a |
|
184 | $ cd ../a | |
@@ -193,7 +192,7 b' listkeys hook' | |||||
193 | pulling from ../a |
|
192 | pulling from ../a | |
194 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} |
|
193 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} | |
195 | no changes found |
|
194 | no changes found | |
196 |
listkeys hook: HG_NAMESPACE=phases HG_VALUES={' |
|
195 | listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'} | |
197 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} |
|
196 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} | |
198 | importing bookmark bar |
|
197 | importing bookmark bar | |
199 | $ cd ../a |
|
198 | $ cd ../a | |
@@ -207,7 +206,7 b' test that prepushkey can prevent incomin' | |||||
207 | pushing to ../a |
|
206 | pushing to ../a | |
208 | searching for changes |
|
207 | searching for changes | |
209 | no changes found |
|
208 | no changes found | |
210 |
listkeys hook: HG_NAMESPACE=phases HG_VALUES={' |
|
209 | listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'} | |
211 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} |
|
210 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} | |
212 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} |
|
211 | listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} | |
213 | exporting bookmark baz |
|
212 | exporting bookmark baz |
@@ -238,10 +238,10 b' we are in nu' | |||||
238 | adding file changes |
|
238 | adding file changes | |
239 | added 1 changesets with 1 changes to 1 files |
|
239 | added 1 changesets with 1 changes to 1 files | |
240 | (run 'hg update' to get a working copy) |
|
240 | (run 'hg update' to get a working copy) | |
241 | $ hgph |
|
241 | $ hgph # f54f1bb90ff3 stay draft, not ancestor of -r | |
242 | o 4 public a-D - b555f63b6063 |
|
242 | o 4 public a-D - b555f63b6063 | |
243 | | |
|
243 | | | |
244 |
| o 3 |
|
244 | | o 3 draft b-A - f54f1bb90ff3 | |
245 | | | |
|
245 | | | | |
246 | o | 2 public a-C - 54acac6f23ab |
|
246 | o | 2 public a-C - 54acac6f23ab | |
247 | |/ |
|
247 | |/ | |
@@ -262,7 +262,7 b' pulling from Publish=False to publish=Fa' | |||||
262 | | |
|
262 | | | |
263 | | o 4 public a-D - b555f63b6063 |
|
263 | | o 4 public a-D - b555f63b6063 | |
264 | | | |
|
264 | | | | |
265 |
o | 3 |
|
265 | o | 3 draft b-A - f54f1bb90ff3 | |
266 | | | |
|
266 | | | | |
267 | | o 2 public a-C - 54acac6f23ab |
|
267 | | o 2 public a-C - 54acac6f23ab | |
268 | |/ |
|
268 | |/ | |
@@ -288,7 +288,7 b' pulling from Publish=False to publish=Fa' | |||||
288 | | | |
|
288 | | | | |
289 | | o 3 public a-C - 54acac6f23ab |
|
289 | | o 3 public a-C - 54acac6f23ab | |
290 | | | |
|
290 | | | | |
291 |
o | 2 |
|
291 | o | 2 draft b-A - f54f1bb90ff3 | |
292 | |/ |
|
292 | |/ | |
293 | o 1 public a-B - 548a3d25dbf0 |
|
293 | o 1 public a-B - 548a3d25dbf0 | |
294 | | |
|
294 | | | |
@@ -497,20 +497,21 b' Pushing to Publish=False (unknown change' | |||||
497 |
|
497 | |||
498 |
|
498 | |||
499 | $ cd ../mu |
|
499 | $ cd ../mu | |
500 |
$ hgph # d6bcb4f74035 and 145e75495359 |
|
500 | $ hgph # again f54f1bb90ff3, d6bcb4f74035 and 145e75495359 stay draft, | |
|
501 | > # not ancestor of -r | |||
501 | o 8 draft a-F - b740e3e5c05d |
|
502 | o 8 draft a-F - b740e3e5c05d | |
502 | | |
|
503 | | | |
503 | o 7 draft a-E - e9f537e46dea |
|
504 | o 7 draft a-E - e9f537e46dea | |
504 | | |
|
505 | | | |
505 |
| o 6 |
|
506 | | o 6 draft n-B - 145e75495359 | |
506 | | | |
|
507 | | | | |
507 |
| o 5 |
|
508 | | o 5 draft n-A - d6bcb4f74035 | |
508 | | | |
|
509 | | | | |
509 | o | 4 public a-D - b555f63b6063 |
|
510 | o | 4 public a-D - b555f63b6063 | |
510 | | | |
|
511 | | | | |
511 | o | 3 public a-C - 54acac6f23ab |
|
512 | o | 3 public a-C - 54acac6f23ab | |
512 | | | |
|
513 | | | | |
513 |
| o 2 |
|
514 | | o 2 draft b-A - f54f1bb90ff3 | |
514 | |/ |
|
515 | |/ | |
515 | o 1 public a-B - 548a3d25dbf0 |
|
516 | o 1 public a-B - 548a3d25dbf0 | |
516 | | |
|
517 | | | |
@@ -526,20 +527,21 b' Pushing to Publish=True (unknown changes' | |||||
526 | adding manifests |
|
527 | adding manifests | |
527 | adding file changes |
|
528 | adding file changes | |
528 | added 2 changesets with 2 changes to 2 files |
|
529 | added 2 changesets with 2 changes to 2 files | |
529 |
$ hgph # again d6bcb4f74035 and 145e75495359 |
|
530 | $ hgph # again f54f1bb90ff3, d6bcb4f74035 and 145e75495359 stay draft, | |
|
531 | > # not ancestor of -r | |||
530 | o 8 public a-F - b740e3e5c05d |
|
532 | o 8 public a-F - b740e3e5c05d | |
531 | | |
|
533 | | | |
532 | o 7 public a-E - e9f537e46dea |
|
534 | o 7 public a-E - e9f537e46dea | |
533 | | |
|
535 | | | |
534 |
| o 6 |
|
536 | | o 6 draft n-B - 145e75495359 | |
535 | | | |
|
537 | | | | |
536 |
| o 5 |
|
538 | | o 5 draft n-A - d6bcb4f74035 | |
537 | | | |
|
539 | | | | |
538 | o | 4 public a-D - b555f63b6063 |
|
540 | o | 4 public a-D - b555f63b6063 | |
539 | | | |
|
541 | | | | |
540 | o | 3 public a-C - 54acac6f23ab |
|
542 | o | 3 public a-C - 54acac6f23ab | |
541 | | | |
|
543 | | | | |
542 |
| o 2 |
|
544 | | o 2 draft b-A - f54f1bb90ff3 | |
543 | |/ |
|
545 | |/ | |
544 | o 1 public a-B - 548a3d25dbf0 |
|
546 | o 1 public a-B - 548a3d25dbf0 | |
545 | | |
|
547 | | | |
@@ -569,7 +571,7 b' Pushing to Publish=True (common changese' | |||||
569 | o 0 public a-A - 054250a37db4 |
|
571 | o 0 public a-A - 054250a37db4 | |
570 |
|
572 | |||
571 | $ cd ../alpha |
|
573 | $ cd ../alpha | |
572 | $ hgph # e9f537e46dea and b740e3e5c05d should have been sync to 0 |
|
574 | $ hgph | |
573 | @ 10 draft a-H - 967b449fbc94 |
|
575 | @ 10 draft a-H - 967b449fbc94 | |
574 | | |
|
576 | | | |
575 | | o 9 draft a-G - 3e27b6f1eee1 |
|
577 | | o 9 draft a-G - 3e27b6f1eee1 | |
@@ -627,14 +629,14 b' Pushing to Publish=False (common changes' | |||||
627 |
|
629 | |||
628 | $ cd ../mu |
|
630 | $ cd ../mu | |
629 | $ hgph # d6bcb4f74035 should have changed phase |
|
631 | $ hgph # d6bcb4f74035 should have changed phase | |
630 | > # again d6bcb4f74035 and 145e75495359 changed because common was too smart |
|
632 | > # 145e75495359 is still draft. not ancestor of -r | |
631 | o 9 draft a-H - 967b449fbc94 |
|
633 | o 9 draft a-H - 967b449fbc94 | |
632 | | |
|
634 | | | |
633 | | o 8 public a-F - b740e3e5c05d |
|
635 | | o 8 public a-F - b740e3e5c05d | |
634 | | | |
|
636 | | | | |
635 | | o 7 public a-E - e9f537e46dea |
|
637 | | o 7 public a-E - e9f537e46dea | |
636 | | | |
|
638 | | | | |
637 |
+---o 6 |
|
639 | +---o 6 draft n-B - 145e75495359 | |
638 | | | |
|
640 | | | | |
639 | o | 5 public n-A - d6bcb4f74035 |
|
641 | o | 5 public n-A - d6bcb4f74035 | |
640 | | | |
|
642 | | | |
General Comments 0
You need to be logged in to leave comments.
Login now