mercurial/dirstate.py
changeset 50152 e9379b55ed80
parent 50149 03decaaf1eff
child 50154 028fb89a0539
equal deleted inserted replaced
50151:092db6464321 50152:e9379b55ed80
   114         return func(self, *args, **kwargs)
   114         return func(self, *args, **kwargs)
   115 
   115 
   116     return check_invalidated(wrap)
   116     return check_invalidated(wrap)
   117 
   117 
   118 
   118 
   119 def requires_not_changing_parents(func):
   119 def requires_changing_files_or_status(func):
   120     def wrap(self, *args, **kwargs):
   120     def wrap(self, *args, **kwargs):
   121         if self.is_changing_parents:
   121         if not (self.is_changing_files or self._running_status > 0):
   122             msg = 'calling `%s` inside of a changing_parents context'
   122             msg = (
       
   123                 'calling `%s` outside of a changing_files '
       
   124                 'or running_status context'
       
   125             )
   123             msg %= func.__name__
   126             msg %= func.__name__
   124             raise error.ProgrammingError(msg)
   127             raise error.ProgrammingError(msg)
   125         return func(self, *args, **kwargs)
   128         return func(self, *args, **kwargs)
   126 
   129 
   127     return check_invalidated(wrap)
   130     return check_invalidated(wrap)
   696         if ret:
   699         if ret:
   697             self._dirty = True
   700             self._dirty = True
   698             self._dirty_tracked_set = True
   701             self._dirty_tracked_set = True
   699         return ret
   702         return ret
   700 
   703 
   701     @requires_not_changing_parents
   704     @requires_changing_files_or_status
   702     def set_clean(self, filename, parentfiledata):
   705     def set_clean(self, filename, parentfiledata):
   703         """record that the current state of the file on disk is known to be clean"""
   706         """record that the current state of the file on disk is known to be clean"""
   704         self._dirty = True
   707         self._dirty = True
   705         if not self._map[filename].tracked:
   708         if not self._map[filename].tracked:
   706             self._check_new_tracked_filename(filename)
   709             self._check_new_tracked_filename(filename)
   707         (mode, size, mtime) = parentfiledata
   710         (mode, size, mtime) = parentfiledata
   708         self._map.set_clean(filename, mode, size, mtime)
   711         self._map.set_clean(filename, mode, size, mtime)
   709 
   712 
   710     @requires_not_changing_parents
   713     @requires_changing_files_or_status
   711     def set_possibly_dirty(self, filename):
   714     def set_possibly_dirty(self, filename):
   712         """record that the current state of the file on disk is unknown"""
   715         """record that the current state of the file on disk is unknown"""
   713         self._dirty = True
   716         self._dirty = True
   714         self._map.set_possibly_dirty(filename)
   717         self._map.set_possibly_dirty(filename)
   715 
   718