equal
deleted
inserted
replaced
57 return None, None, None |
57 return None, None, None |
58 |
58 |
59 state = file.read().split('\0') |
59 state = file.read().split('\0') |
60 # state = hostname\0clock\0ignorehash\0 + list of files, each |
60 # state = hostname\0clock\0ignorehash\0 + list of files, each |
61 # followed by a \0 |
61 # followed by a \0 |
|
62 if len(state) < 3: |
|
63 self._ui.log( |
|
64 'fsmonitor', 'fsmonitor: state file truncated (expected ' |
|
65 '3 chunks, found %d), nuking state\n', len(state)) |
|
66 self.invalidate() |
|
67 return None, None, None |
62 diskhostname = state[0] |
68 diskhostname = state[0] |
63 hostname = socket.gethostname() |
69 hostname = socket.gethostname() |
64 if diskhostname != hostname: |
70 if diskhostname != hostname: |
65 # file got moved to a different host |
71 # file got moved to a different host |
66 self._ui.log('fsmonitor', 'fsmonitor: stored hostname "%s" ' |
72 self._ui.log('fsmonitor', 'fsmonitor: stored hostname "%s" ' |
83 if clock is None: |
89 if clock is None: |
84 self.invalidate() |
90 self.invalidate() |
85 return |
91 return |
86 |
92 |
87 try: |
93 try: |
88 file = self._opener('fsmonitor.state', 'wb') |
94 file = self._opener('fsmonitor.state', 'wb', atomictemp=True) |
89 except (IOError, OSError): |
95 except (IOError, OSError): |
90 self._ui.warn(_("warning: unable to write out fsmonitor state\n")) |
96 self._ui.warn(_("warning: unable to write out fsmonitor state\n")) |
91 return |
97 return |
92 |
98 |
93 try: |
99 with file: |
94 file.write(struct.pack(_versionformat, _version)) |
100 file.write(struct.pack(_versionformat, _version)) |
95 file.write(socket.gethostname() + '\0') |
101 file.write(socket.gethostname() + '\0') |
96 file.write(clock + '\0') |
102 file.write(clock + '\0') |
97 file.write(ignorehash + '\0') |
103 file.write(ignorehash + '\0') |
98 if notefiles: |
104 if notefiles: |
99 file.write('\0'.join(notefiles)) |
105 file.write('\0'.join(notefiles)) |
100 file.write('\0') |
106 file.write('\0') |
101 finally: |
|
102 file.close() |
|
103 |
107 |
104 def invalidate(self): |
108 def invalidate(self): |
105 try: |
109 try: |
106 os.unlink(os.path.join(self._rootdir, '.hg', 'fsmonitor.state')) |
110 os.unlink(os.path.join(self._rootdir, '.hg', 'fsmonitor.state')) |
107 except OSError as inst: |
111 except OSError as inst: |