hgext/keyword.py
changeset 48383 4237be881bb6
parent 47736 b9086ec4d28b
child 48875 6000f5b25c9b
equal deleted inserted replaced
48382:991e6f728b50 48383:4237be881bb6
   114 )
   114 )
   115 from mercurial.utils import (
   115 from mercurial.utils import (
   116     dateutil,
   116     dateutil,
   117     stringutil,
   117     stringutil,
   118 )
   118 )
       
   119 from mercurial.dirstateutils import timestamp
   119 
   120 
   120 cmdtable = {}
   121 cmdtable = {}
   121 command = registrar.command(cmdtable)
   122 command = registrar.command(cmdtable)
   122 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
   123 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
   123 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
   124 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
   324             re_kw = self.rekwexp
   325             re_kw = self.rekwexp
   325         if expand:
   326         if expand:
   326             msg = _(b'overwriting %s expanding keywords\n')
   327             msg = _(b'overwriting %s expanding keywords\n')
   327         else:
   328         else:
   328             msg = _(b'overwriting %s shrinking keywords\n')
   329             msg = _(b'overwriting %s shrinking keywords\n')
       
   330         wctx = self.repo[None]
   329         for f in candidates:
   331         for f in candidates:
   330             if self.restrict:
   332             if self.restrict:
   331                 data = self.repo.file(f).read(mf[f])
   333                 data = self.repo.file(f).read(mf[f])
   332             else:
   334             else:
   333                 data = self.repo.wread(f)
   335                 data = self.repo.wread(f)
   354                 self.ui.note(msg % f)
   356                 self.ui.note(msg % f)
   355                 fp = self.repo.wvfs(f, b"wb", atomictemp=True)
   357                 fp = self.repo.wvfs(f, b"wb", atomictemp=True)
   356                 fp.write(data)
   358                 fp.write(data)
   357                 fp.close()
   359                 fp.close()
   358                 if kwcmd:
   360                 if kwcmd:
   359                     self.repo.dirstate.set_clean(f)
   361                     s = wctx[f].lstat()
       
   362                     mode = s.st_mode
       
   363                     size = s.st_size
       
   364                     mtime = timestamp.mtime_of(s)
       
   365                     cache_data = (mode, size, mtime)
       
   366                     self.repo.dirstate.set_clean(f, cache_data)
   360                 elif self.postcommit:
   367                 elif self.postcommit:
   361                     self.repo.dirstate.update_file_p1(f, p1_tracked=True)
   368                     self.repo.dirstate.update_file_p1(f, p1_tracked=True)
   362 
   369 
   363     def shrink(self, fname, text):
   370     def shrink(self, fname, text):
   364         '''Returns text with all keyword substitutions removed.'''
   371         '''Returns text with all keyword substitutions removed.'''