mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
bookmarks: rewrite pushing bookmarks in "localrepository.push()" by "compare()"
This patch adds "updateremote()", which uses "compare()" to compare bookmarks between the local and the remote repositories, to replace pushing local bookmarks in "localrepository.push()".
This commit is contained in:
parent
22784f4191
commit
f4da0cbf73
@ -364,6 +364,22 @@ def updatefromremote(ui, repo, remotemarks, path):
|
||||
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'),
|
||||
|
@ -1976,27 +1976,7 @@ class localrepository(object):
|
||||
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):
|
||||
|
Loading…
Reference in New Issue
Block a user