D4095: narrow: extract part of narrowspec backup to core

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Fri Aug 3 21:24:24 UTC 2018


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

REVISION SUMMARY
  Just a little preparation for the next patch.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  hgext/narrow/narrowdirstate.py
  mercurial/narrowspec.py

CHANGE DETAILS

diff --git a/mercurial/narrowspec.py b/mercurial/narrowspec.py
--- a/mercurial/narrowspec.py
+++ b/mercurial/narrowspec.py
@@ -145,6 +145,16 @@
     spec = format(includepats, excludepats)
     repo.vfs.write(FILENAME, spec)
 
+def savebackup(vfs, backupname):
+    vfs.tryunlink(backupname)
+    util.copyfile(vfs.join(FILENAME), vfs.join(backupname), hardlink=True)
+
+def restorebackup(vfs, backupname):
+    vfs.rename(backupname, FILENAME, checkambig=True)
+
+def clearbackup(vfs, backupname):
+    vfs.unlink(backupname)
+
 def restrictpatterns(req_includes, req_excludes, repo_includes, repo_excludes):
     r""" Restricts the patterns according to repo settings,
     results in a logical AND operation
diff --git a/hgext/narrow/narrowdirstate.py b/hgext/narrow/narrowdirstate.py
--- a/hgext/narrow/narrowdirstate.py
+++ b/hgext/narrow/narrowdirstate.py
@@ -12,7 +12,6 @@
     error,
     match as matchmod,
     narrowspec,
-    util as hgutil,
 )
 
 def wrapdirstate(repo, dirstate):
@@ -79,21 +78,17 @@
             super(narrowdirstate, self).rebuild(parent, allfiles, changedfiles)
 
         def restorebackup(self, tr, backupname):
-            self._opener.rename(_narrowbackupname(backupname),
-                                narrowspec.FILENAME, checkambig=True)
+            narrowspec.restorebackup(self._opener,
+                                     _narrowbackupname(backupname))
             super(narrowdirstate, self).restorebackup(tr, backupname)
 
         def savebackup(self, tr, backupname):
             super(narrowdirstate, self).savebackup(tr, backupname)
-
-            narrowbackupname = _narrowbackupname(backupname)
-            self._opener.tryunlink(narrowbackupname)
-            hgutil.copyfile(self._opener.join(narrowspec.FILENAME),
-                            self._opener.join(narrowbackupname), hardlink=True)
+            narrowspec.savebackup(self._opener, _narrowbackupname(backupname))
 
         def clearbackup(self, tr, backupname):
             super(narrowdirstate, self).clearbackup(tr, backupname)
-            self._opener.unlink(_narrowbackupname(backupname))
+            narrowspec.clearbackup(self._opener, _narrowbackupname(backupname))
 
     dirstate.__class__ = narrowdirstate
     return dirstate



To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list