Show More
@@ -8,7 +8,7 b' from node import hex, nullid, short' | |||||
8 | from i18n import _ |
|
8 | from i18n import _ | |
9 | import peer, changegroup, subrepo, discovery, pushkey, obsolete, repoview |
|
9 | import peer, changegroup, subrepo, discovery, pushkey, obsolete, repoview | |
10 | import changelog, dirstate, filelog, manifest, context, bookmarks, phases |
|
10 | import changelog, dirstate, filelog, manifest, context, bookmarks, phases | |
11 |
import lock, transaction, store, encoding |
|
11 | import lock, transaction, store, encoding | |
12 | import scmutil, util, extensions, hook, error, revset |
|
12 | import scmutil, util, extensions, hook, error, revset | |
13 | import match as matchmod |
|
13 | import match as matchmod | |
14 | import merge as mergemod |
|
14 | import merge as mergemod | |
@@ -1717,17 +1717,15 b' class localrepository(object):' | |||||
1717 | # should be seen as public |
|
1717 | # should be seen as public | |
1718 | phases.advanceboundary(self, phases.public, subset) |
|
1718 | phases.advanceboundary(self, phases.public, subset) | |
1719 |
|
1719 | |||
1720 | if obsolete._enabled: |
|
1720 | def gettransaction(): | |
1721 | self.ui.debug('fetching remote obsolete markers\n') |
|
1721 | if tr is None: | |
1722 | remoteobs = remote.listkeys('obsolete') |
|
1722 | return self.transaction(trname) | |
1723 |
|
|
1723 | return tr | |
1724 | if tr is None: |
|
1724 | ||
1725 | tr = self.transaction(trname) |
|
1725 | obstr = obsolete.syncpull(self, remote, gettransaction) | |
1726 | for key in sorted(remoteobs, reverse=True): |
|
1726 | if obstr is not None: | |
1727 | if key.startswith('dump'): |
|
1727 | tr = obstr | |
1728 | data = base85.b85decode(remoteobs[key]) |
|
1728 | ||
1729 | self.obsstore.mergemarkers(tr, data) |
|
|||
1730 | self.invalidatevolatilesets() |
|
|||
1731 | if tr is not None: |
|
1729 | if tr is not None: | |
1732 | tr.close() |
|
1730 | tr.close() | |
1733 | finally: |
|
1731 | finally: |
@@ -386,6 +386,27 b' def syncpush(repo, remote):' | |||||
386 | msg = _('failed to push some obsolete markers!\n') |
|
386 | msg = _('failed to push some obsolete markers!\n') | |
387 | repo.ui.warn(msg) |
|
387 | repo.ui.warn(msg) | |
388 |
|
388 | |||
|
389 | def syncpull(repo, remote, gettransaction): | |||
|
390 | """utility function to pull bookmark to a remote | |||
|
391 | ||||
|
392 | The `gettransaction` is function that return the pull transaction, creating | |||
|
393 | one if necessary. We return the transaction to inform the calling code that | |||
|
394 | a new transaction have been created (when applicable). | |||
|
395 | ||||
|
396 | Exists mostly to allow overridding for experimentation purpose""" | |||
|
397 | tr = None | |||
|
398 | if _enabled: | |||
|
399 | repo.ui.debug('fetching remote obsolete markers\n') | |||
|
400 | remoteobs = remote.listkeys('obsolete') | |||
|
401 | if 'dump0' in remoteobs: | |||
|
402 | tr = gettransaction() | |||
|
403 | for key in sorted(remoteobs, reverse=True): | |||
|
404 | if key.startswith('dump'): | |||
|
405 | data = base85.b85decode(remoteobs[key]) | |||
|
406 | repo.obsstore.mergemarkers(tr, data) | |||
|
407 | repo.invalidatevolatilesets() | |||
|
408 | return tr | |||
|
409 | ||||
389 | def allmarkers(repo): |
|
410 | def allmarkers(repo): | |
390 | """all obsolete markers known in a repository""" |
|
411 | """all obsolete markers known in a repository""" | |
391 | for markerdata in repo.obsstore: |
|
412 | for markerdata in repo.obsstore: |
General Comments 0
You need to be logged in to leave comments.
Login now