mercurial/manifest.py
changeset 24551 4fdf5eac5b39
parent 24550 4daae7edf166
child 24552 a2292da6d821
equal deleted inserted replaced
24550:4daae7edf166 24551:4fdf5eac5b39
   368         size = len(self._files)
   368         size = len(self._files)
   369         for m in self._dirs.values():
   369         for m in self._dirs.values():
   370             size += m.__len__()
   370             size += m.__len__()
   371         return size
   371         return size
   372 
   372 
       
   373     def _isempty(self):
       
   374         return (not self._files and (not self._dirs or
       
   375                 util.all(m._isempty() for m in self._dirs.values())))
       
   376 
   373     def __str__(self):
   377     def __str__(self):
   374         return '<treemanifest dir=%s>' % self._dir
   378         return '<treemanifest dir=%s>' % self._dir
   375 
   379 
   376     def iteritems(self):
   380     def iteritems(self):
   377         for p, n in sorted(self._dirs.items() + self._files.items()):
   381         for p, n in sorted(self._dirs.items() + self._files.items()):
   443     def __delitem__(self, f):
   447     def __delitem__(self, f):
   444         dir, subpath = _splittopdir(f)
   448         dir, subpath = _splittopdir(f)
   445         if dir:
   449         if dir:
   446             self._dirs[dir].__delitem__(subpath)
   450             self._dirs[dir].__delitem__(subpath)
   447             # If the directory is now empty, remove it
   451             # If the directory is now empty, remove it
   448             if not self._dirs[dir]._dirs and not self._dirs[dir]._files:
   452             if self._dirs[dir]._isempty():
   449                 del self._dirs[dir]
   453                 del self._dirs[dir]
   450         else:
   454         else:
   451             del self._files[f]
   455             del self._files[f]
   452             if f in self._flags:
   456             if f in self._flags:
   453                 del self._flags[f]
   457                 del self._flags[f]