mercurial/dirstate.py
changeset 47973 2e0ff3947b05
parent 47972 5a6c1ef4bcac
child 47974 4e6f27230aee
equal deleted inserted replaced
47972:5a6c1ef4bcac 47973:2e0ff3947b05
   674         from_p2=False,
   674         from_p2=False,
   675         possibly_dirty=False,
   675         possibly_dirty=False,
   676     ):
   676     ):
   677         entry = self._map.get(f)
   677         entry = self._map.get(f)
   678         if added or entry is not None and entry.removed:
   678         if added or entry is not None and entry.removed:
   679             scmutil.checkfilename(f)
   679             self._check_new_tracked_filename(f)
   680             if self._map.hastrackeddir(f):
       
   681                 msg = _(b'directory %r already in dirstate')
       
   682                 msg %= pycompat.bytestr(f)
       
   683                 raise error.Abort(msg)
       
   684             # shadows
       
   685             for d in pathutil.finddirs(f):
       
   686                 if self._map.hastrackeddir(d):
       
   687                     break
       
   688                 entry = self._map.get(d)
       
   689                 if entry is not None and not entry.removed:
       
   690                     msg = _(b'file %r in dirstate clashes with %r')
       
   691                     msg %= (pycompat.bytestr(d), pycompat.bytestr(f))
       
   692                     raise error.Abort(msg)
       
   693         self._dirty = True
   680         self._dirty = True
   694         self._updatedfiles.add(f)
   681         self._updatedfiles.add(f)
   695         self._map.addfile(
   682         self._map.addfile(
   696             f,
   683             f,
   697             mode=mode,
   684             mode=mode,
   700             added=added,
   687             added=added,
   701             merged=merged,
   688             merged=merged,
   702             from_p2=from_p2,
   689             from_p2=from_p2,
   703             possibly_dirty=possibly_dirty,
   690             possibly_dirty=possibly_dirty,
   704         )
   691         )
       
   692 
       
   693     def _check_new_tracked_filename(self, filename):
       
   694         scmutil.checkfilename(filename)
       
   695         if self._map.hastrackeddir(filename):
       
   696             msg = _(b'directory %r already in dirstate')
       
   697             msg %= pycompat.bytestr(filename)
       
   698             raise error.Abort(msg)
       
   699         # shadows
       
   700         for d in pathutil.finddirs(filename):
       
   701             if self._map.hastrackeddir(d):
       
   702                 break
       
   703             entry = self._map.get(d)
       
   704             if entry is not None and not entry.removed:
       
   705                 msg = _(b'file %r in dirstate clashes with %r')
       
   706                 msg %= (pycompat.bytestr(d), pycompat.bytestr(filename))
       
   707                 raise error.Abort(msg)
   705 
   708 
   706     def _get_filedata(self, filename):
   709     def _get_filedata(self, filename):
   707         """returns"""
   710         """returns"""
   708         s = os.lstat(self._join(filename))
   711         s = os.lstat(self._join(filename))
   709         mode = s.st_mode
   712         mode = s.st_mode