comparison hgext/fsmonitor/state.py @ 43076:2372284d9457

formatting: blacken the codebase This is using my patch to black (https://github.com/psf/black/pull/826) so we don't un-wrap collection literals. Done with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S # skip-blame mass-reformatting only # no-check-commit reformats foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D6971
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:45:02 -0400
parents 718f7acd6d5e
children 687b865b95ad
comparison
equal deleted inserted replaced
43075:57875cf423c9 43076:2372284d9457
19 ) 19 )
20 20
21 _version = 4 21 _version = 4
22 _versionformat = ">I" 22 _versionformat = ">I"
23 23
24
24 class state(object): 25 class state(object):
25 def __init__(self, repo): 26 def __init__(self, repo):
26 self._vfs = repo.vfs 27 self._vfs = repo.vfs
27 self._ui = repo.ui 28 self._ui = repo.ui
28 self._rootdir = pathutil.normasprefix(repo.root) 29 self._rootdir = pathutil.normasprefix(repo.root)
29 self._lastclock = None 30 self._lastclock = None
30 self._identity = util.filestat(None) 31 self._identity = util.filestat(None)
31 32
32 self.mode = self._ui.config('fsmonitor', 'mode') 33 self.mode = self._ui.config('fsmonitor', 'mode')
33 self.walk_on_invalidate = self._ui.configbool( 34 self.walk_on_invalidate = self._ui.configbool(
34 'fsmonitor', 'walk_on_invalidate') 35 'fsmonitor', 'walk_on_invalidate'
36 )
35 self.timeout = float(self._ui.config('fsmonitor', 'timeout')) 37 self.timeout = float(self._ui.config('fsmonitor', 'timeout'))
36 38
37 def get(self): 39 def get(self):
38 try: 40 try:
39 file = self._vfs('fsmonitor.state', 'rb') 41 file = self._vfs('fsmonitor.state', 'rb')
46 self._identity = util.filestat.fromfp(file) 48 self._identity = util.filestat.fromfp(file)
47 49
48 versionbytes = file.read(4) 50 versionbytes = file.read(4)
49 if len(versionbytes) < 4: 51 if len(versionbytes) < 4:
50 self._ui.log( 52 self._ui.log(
51 'fsmonitor', 'fsmonitor: state file only has %d bytes, ' 53 'fsmonitor',
52 'nuking state\n' % len(versionbytes)) 54 'fsmonitor: state file only has %d bytes, '
55 'nuking state\n' % len(versionbytes),
56 )
53 self.invalidate() 57 self.invalidate()
54 return None, None, None 58 return None, None, None
55 try: 59 try:
56 diskversion = struct.unpack(_versionformat, versionbytes)[0] 60 diskversion = struct.unpack(_versionformat, versionbytes)[0]
57 if diskversion != _version: 61 if diskversion != _version:
58 # different version, nuke state and start over 62 # different version, nuke state and start over
59 self._ui.log( 63 self._ui.log(
60 'fsmonitor', 'fsmonitor: version switch from %d to ' 64 'fsmonitor',
61 '%d, nuking state\n' % (diskversion, _version)) 65 'fsmonitor: version switch from %d to '
66 '%d, nuking state\n' % (diskversion, _version),
67 )
62 self.invalidate() 68 self.invalidate()
63 return None, None, None 69 return None, None, None
64 70
65 state = file.read().split('\0') 71 state = file.read().split('\0')
66 # state = hostname\0clock\0ignorehash\0 + list of files, each 72 # state = hostname\0clock\0ignorehash\0 + list of files, each
67 # followed by a \0 73 # followed by a \0
68 if len(state) < 3: 74 if len(state) < 3:
69 self._ui.log( 75 self._ui.log(
70 'fsmonitor', 'fsmonitor: state file truncated (expected ' 76 'fsmonitor',
71 '3 chunks, found %d), nuking state\n', len(state)) 77 'fsmonitor: state file truncated (expected '
78 '3 chunks, found %d), nuking state\n',
79 len(state),
80 )
72 self.invalidate() 81 self.invalidate()
73 return None, None, None 82 return None, None, None
74 diskhostname = state[0] 83 diskhostname = state[0]
75 hostname = socket.gethostname() 84 hostname = socket.gethostname()
76 if diskhostname != hostname: 85 if diskhostname != hostname:
77 # file got moved to a different host 86 # file got moved to a different host
78 self._ui.log('fsmonitor', 'fsmonitor: stored hostname "%s" ' 87 self._ui.log(
79 'different from current "%s", nuking state\n' % 88 'fsmonitor',
80 (diskhostname, hostname)) 89 'fsmonitor: stored hostname "%s" '
90 'different from current "%s", nuking state\n'
91 % (diskhostname, hostname),
92 )
81 self.invalidate() 93 self.invalidate()
82 return None, None, None 94 return None, None, None
83 95
84 clock = state[1] 96 clock = state[1]
85 ignorehash = state[2] 97 ignorehash = state[2]
102 if identity != self._identity: 114 if identity != self._identity:
103 self._ui.debug('skip updating fsmonitor.state: identity mismatch\n') 115 self._ui.debug('skip updating fsmonitor.state: identity mismatch\n')
104 return 116 return
105 117
106 try: 118 try:
107 file = self._vfs('fsmonitor.state', 'wb', atomictemp=True, 119 file = self._vfs(
108 checkambig=True) 120 'fsmonitor.state', 'wb', atomictemp=True, checkambig=True
121 )
109 except (IOError, OSError): 122 except (IOError, OSError):
110 self._ui.warn(_("warning: unable to write out fsmonitor state\n")) 123 self._ui.warn(_("warning: unable to write out fsmonitor state\n"))
111 return 124 return
112 125
113 with file: 126 with file: