changeset 51430:187c5769a629

vfs: have tryunlink tell what it did It is useful in certain circumstances to know whether vfs.tryunlink() actually removed something or not, be it for logging purposes.
author Georges Racinet <georges.racinet@octobus.net>
date Wed, 17 Jan 2024 14:26:58 +0100
parents bc88aa7472de
children fe68a2dc0bf2
files mercurial/util.py mercurial/vfs.py
diffstat 2 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/util.py	Sat Nov 26 12:23:56 2022 +0100
+++ b/mercurial/util.py	Wed Jan 17 14:26:58 2024 +0100
@@ -2610,12 +2610,16 @@
             pass
 
 
-def tryunlink(f: bytes) -> None:
-    """Attempt to remove a file, ignoring FileNotFoundError."""
+def tryunlink(f: bytes) -> bool:
+    """Attempt to remove a file, ignoring FileNotFoundError.
+
+    Returns False in case the file did not exit, True otherwise
+    """
     try:
         unlink(f)
+        return True
     except FileNotFoundError:
-        pass
+        return False
 
 
 def makedirs(
--- a/mercurial/vfs.py	Sat Nov 26 12:23:56 2022 +0100
+++ b/mercurial/vfs.py	Wed Jan 17 14:26:58 2024 +0100
@@ -303,7 +303,7 @@
 
     def tryunlink(self, path: Optional[bytes] = None):
         """Attempt to remove a file, ignoring missing file errors."""
-        util.tryunlink(self.join(path))
+        return util.tryunlink(self.join(path))
 
     def unlinkpath(
         self, path: Optional[bytes] = None, ignoremissing=False, rmdir=True