[PATCH 4 of 4] doc: describe detail about checkambig optional argument

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Sun Jun 12 16:15:21 EDT 2016


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1465762316 -32400
#      Mon Jun 13 05:11:56 2016 +0900
# Node ID a8dc7aac5e39d0982fce47a8b66ed206ecfd733e
# Parent  02167888292b1c6ce3f2993deff4612eaf0a7591
doc: describe detail about checkambig optional argument

This is followup for patches below, which add checkambig argument to
existing function.

  - 731ced087a4b
  - 76f1ea360c7e
  - ce2d81aafbae
  - a109bf7e0dc2

diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -379,6 +379,12 @@ class abstractvfs(object):
         return util.readlock(self.join(path))
 
     def rename(self, src, dst, checkambig=False):
+        """Rename from src to dst
+
+        checkambig argument is used with util.filestat, and is useful
+        only if destination file is guarded by any lock
+        (e.g. repo.lock or repo.slock).
+        """
         dstpath = self.join(dst)
         oldstat = checkambig and util.filestat(dstpath)
         if oldstat and oldstat.stat:
@@ -533,7 +539,9 @@ class vfs(abstractvfs):
            file were opened multiple times, there could be unflushed data
            because the original file handle hasn't been flushed/closed yet.)
 
-        ``checkambig`` is passed to atomictempfile (valid only for writing).
+        ``checkambig`` argument is passed to atomictemplfile (valid
+        only for writing), and is useful only if target file is
+        guarded by any lock (e.g. repo.lock or repo.slock).
         '''
         if self._audit:
             r = util.checkosfilename(path)
diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -1010,7 +1010,14 @@ def checksignature(func):
 
 def copyfile(src, dest, hardlink=False, copystat=False, checkambig=False):
     '''copy a file, preserving mode and optionally other stat info like
-    atime/mtime'''
+    atime/mtime
+
+    checkambig argument is used with filestat, and is useful only if
+    destination file is guarded by any lock (e.g. repo.lock or
+    repo.slock).
+
+    copystat and checkambig should be exclusive.
+    '''
     assert not (copystat and checkambig)
     oldstat = None
     if os.path.lexists(dest):
@@ -1463,6 +1470,10 @@ class atomictempfile(object):
     the temporary copy to the original name, making the changes
     visible. If the object is destroyed without being closed, all your
     writes are discarded.
+
+    checkambig argument of constructor is used with filestat, and is
+    useful only if target file is guarded by any lock (e.g. repo.lock
+    or repo.slock).
     '''
     def __init__(self, name, mode='w+b', createmode=None, checkambig=False):
         self.__name = name      # permanent name


More information about the Mercurial-devel mailing list