@@ -364,6 +364,22 @@
writer(msg)
localmarks.write()
+def updateremote(ui, repo, remote, revs):
+ ui.debug("checking for updated bookmarks\n")
+ revnums = map(repo.changelog.rev, revs or [])
+ ancestors = [a for a in repo.changelog.ancestors(revnums, inclusive=True)]
+ (addsrc, adddst, advsrc, advdst, diverge, differ, invalid
+ ) = compare(repo, repo._bookmarks, remote.listkeys('bookmarks'),
+ srchex=hex)
+
+ for b, scid, dcid in advsrc:
+ if ancestors and repo[scid].rev() not in ancestors:
+ continue
+ if remote.pushkey('bookmarks', b, dcid, scid):
+ ui.status(_("updating bookmark %s\n") % b)
+ else:
+ ui.warn(_('updating bookmark %s failed!\n') % b)
+
def pushtoremote(ui, repo, remote, targets):
(addsrc, adddst, advsrc, advdst, diverge, differ, invalid
) = compare(repo, repo._bookmarks, remote.listkeys('bookmarks'),
@@ -1971,27 +1971,7 @@
if locallock is not None:
locallock.release()
- self.ui.debug("checking for updated bookmarks\n")
- rb = remote.listkeys('bookmarks')
- revnums = map(unfi.changelog.rev, revs or [])
- ancestors = [
- a for a in unfi.changelog.ancestors(revnums, inclusive=True)]
- for k in rb.keys():
- if k in unfi._bookmarks:
- nr, nl = rb[k], hex(self._bookmarks[k])
- if nr in unfi:
- cr = unfi[nr]
- cl = unfi[nl]
- if bookmarks.validdest(unfi, cr, cl):
- if ancestors and cl.rev() not in ancestors:
- continue
- r = remote.pushkey('bookmarks', k, nr, nl)
- if r:
- self.ui.status(_("updating bookmark %s\n") % k)
- else:
- self.ui.warn(_('updating bookmark %s'
- ' failed!\n') % k)
-
+ bookmarks.updateremote(self.ui, unfi, remote, revs)
return ret
def changegroupinfo(self, nodes, source):