diff mercurial/store.py @ 46990:0b569c75d180

store: exclude `undo.` nodemap's file from `walk` There are "temporary" local file that we should not be transfered by `walk` user like local clone and stream clone. This fix the small issue that the new tests highlighted. Differential Revision: https://phab.mercurial-scm.org/D10482
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 20 Apr 2021 04:27:03 +0200
parents aed6ceaad6d7
children f38bf44e077f
line wrap: on
line diff
--- a/mercurial/store.py	Tue Apr 20 05:08:55 2021 +0200
+++ b/mercurial/store.py	Tue Apr 20 04:27:03 2021 +0200
@@ -10,6 +10,7 @@
 import errno
 import functools
 import os
+import re
 import stat
 
 from .i18n import _
@@ -395,6 +396,9 @@
 # deleted.
 REVLOG_FILES_VOLATILE_EXT = (b'.n', b'.nd')
 
+# some exception to the above matching
+EXCLUDED = re.compile(b'.*undo\.[^/]+\.nd?$')
+
 
 def is_revlog(f, kind, st):
     if kind != stat.S_IFREG:
@@ -405,7 +409,7 @@
 def revlog_type(f):
     if f.endswith(REVLOG_FILES_MAIN_EXT):
         return FILEFLAGS_REVLOG_MAIN
-    elif f.endswith(REVLOG_FILES_OTHER_EXT):
+    elif f.endswith(REVLOG_FILES_OTHER_EXT) and EXCLUDED.match(f) is None:
         t = FILETYPE_FILELOG_OTHER
         if f.endswith(REVLOG_FILES_VOLATILE_EXT):
             t |= FILEFLAGS_VOLATILE