Mercurial > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
46989:aed6ceaad6d7 | 46990:0b569c75d180 |
---|---|
8 from __future__ import absolute_import | 8 from __future__ import absolute_import |
9 | 9 |
10 import errno | 10 import errno |
11 import functools | 11 import functools |
12 import os | 12 import os |
13 import re | |
13 import stat | 14 import stat |
14 | 15 |
15 from .i18n import _ | 16 from .i18n import _ |
16 from .pycompat import getattr | 17 from .pycompat import getattr |
17 from .node import hex | 18 from .node import hex |
393 # | 394 # |
394 # note: the ".nd" file are nodemap data and won't "change" but they might be | 395 # note: the ".nd" file are nodemap data and won't "change" but they might be |
395 # deleted. | 396 # deleted. |
396 REVLOG_FILES_VOLATILE_EXT = (b'.n', b'.nd') | 397 REVLOG_FILES_VOLATILE_EXT = (b'.n', b'.nd') |
397 | 398 |
399 # some exception to the above matching | |
400 EXCLUDED = re.compile(b'.*undo\.[^/]+\.nd?$') | |
401 | |
398 | 402 |
399 def is_revlog(f, kind, st): | 403 def is_revlog(f, kind, st): |
400 if kind != stat.S_IFREG: | 404 if kind != stat.S_IFREG: |
401 return None | 405 return None |
402 return revlog_type(f) | 406 return revlog_type(f) |
403 | 407 |
404 | 408 |
405 def revlog_type(f): | 409 def revlog_type(f): |
406 if f.endswith(REVLOG_FILES_MAIN_EXT): | 410 if f.endswith(REVLOG_FILES_MAIN_EXT): |
407 return FILEFLAGS_REVLOG_MAIN | 411 return FILEFLAGS_REVLOG_MAIN |
408 elif f.endswith(REVLOG_FILES_OTHER_EXT): | 412 elif f.endswith(REVLOG_FILES_OTHER_EXT) and EXCLUDED.match(f) is None: |
409 t = FILETYPE_FILELOG_OTHER | 413 t = FILETYPE_FILELOG_OTHER |
410 if f.endswith(REVLOG_FILES_VOLATILE_EXT): | 414 if f.endswith(REVLOG_FILES_VOLATILE_EXT): |
411 t |= FILEFLAGS_VOLATILE | 415 t |= FILEFLAGS_VOLATILE |
412 return t | 416 return t |
413 | 417 |