diff mercurial/scmutil.py @ 40752:65591a513b9c

revert: extract origvfs logic in a sub-function The subrepo's "revert" logic could benefit from it.
author Boris Feld <boris.feld@octobus.net>
date Thu, 22 Nov 2018 19:26:05 +0100
parents 4ec8bee15930
children b7823bd59b07
line wrap: on
line diff
--- a/mercurial/scmutil.py	Thu Nov 22 18:44:07 2018 +0100
+++ b/mercurial/scmutil.py	Thu Nov 22 19:26:05 2018 +0100
@@ -814,21 +814,29 @@
             raise error.ParseError(msg)
         return files[0]
 
+def getorigvfs(ui, repo):
+    """return a vfs suitable to save 'orig' file
+
+    return None if no special directory is configured"""
+    origbackuppath = ui.config('ui', 'origbackuppath')
+    if not origbackuppath:
+        return None
+    return vfs.vfs(repo.wvfs.join(origbackuppath))
+
 def origpath(ui, repo, filepath):
     '''customize where .orig files are created
 
     Fetch user defined path from config file: [ui] origbackuppath = <path>
     Fall back to default (filepath with .orig suffix) if not specified
     '''
-    origbackuppath = ui.config('ui', 'origbackuppath')
-    if not origbackuppath:
+    origvfs = getorigvfs(ui, repo)
+    if origvfs is None:
         return filepath + ".orig"
 
     # Convert filepath from an absolute path into a path inside the repo.
     filepathfromroot = util.normpath(os.path.relpath(filepath,
                                                      start=repo.root))
 
-    origvfs = vfs.vfs(repo.wjoin(origbackuppath))
     origbackupdir = origvfs.dirname(filepathfromroot)
     if not origvfs.isdir(origbackupdir) or origvfs.islink(origbackupdir):
         ui.note(_('creating directory: %s\n') % origvfs.join(origbackupdir))