D1358: remotenames: store journal entry for bookmarks if journal is loaded

pulkit (Pulkit Goyal) phabricator at mercurial-scm.org
Fri Nov 10 19:01:37 UTC 2017


pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1358

AFFECTED FILES
  mercurial/remotenames.py

CHANGE DETAILS

diff --git a/mercurial/remotenames.py b/mercurial/remotenames.py
--- a/mercurial/remotenames.py
+++ b/mercurial/remotenames.py
@@ -8,12 +8,18 @@
 
 from __future__ import absolute_import
 
-from .node import hex
+from .node import (
+    bin,
+    hex,
+)
 
 from . import (
+    util,
     vfs as vfsmod,
 )
 
+# namespace to use when recording an hg journal entry
+journalremotebookmarktype = 'remotebookmark'
 # directory name in .hg/ in which remotenames files will be present
 remotenamedir = 'remotenames'
 
@@ -61,14 +67,26 @@
     bookmarks is a dictionary of remote bookmarks.
     """
     olddata = set(readremotenamefile(repo, 'bookmarks'))
+    oldbooks = {}
 
     vfs = vfsmod.vfs(repo.vfs.join(remotenamedir))
     f = vfs('bookmarks', 'w', atomictemp=True)
 
     # re-save the data from a different remote than this one.
     for node, oldpath, rname in sorted(olddata):
         if oldpath != remotepath:
             f.write('%s %s %s\n' % (node, oldpath, rname))
+        else:
+            oldbooks[rname] = node
+
+    # record a journal entry if journal is loaded
+    if util.safehasattr(repo, 'journal'):
+        for bname, newnode in bookmarks.iteritems():
+            oldnode = oldbooks.get(bname, hex(nullid))
+            if oldnode != newnode:
+                joinedremotename = remotepath + '/' + bname
+                repo.journal.record(journalremotebookmarktype, joinedremotename,
+                                    bin(oldnode), bin(newnode))
 
     for bookmark, node in sorted(bookmarks.iteritems()):
         if node:



To: pulkit, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list