comparison cutils/treesum.py @ 269:fc002983253c

treesum: also return the algorithm used by directory digests. This is a preparation for re-using it from existing treesum files.
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 18 Feb 2025 13:10:05 +0100
parents 8aadffaaad5f
children 42f4ca423ab3
comparison
equal deleted inserted replaced
268:8aadffaaad5f 269:fc002983253c
607 if self._size_only: 607 if self._size_only:
608 self._writer.write_size(opath, None) 608 self._writer.write_size(opath, None)
609 else: 609 else:
610 self._writer.write_file_digest(self._algorithm[1], opath, None) 610 self._writer.write_file_digest(self._algorithm[1], opath, None)
611 self._writer.flush() 611 self._writer.flush()
612 return (None, None) 612 return (None, None, None)
613 if self._utf8_mode: 613 if self._utf8_mode:
614 fsobjects.sort(key=walk.WalkDirEntry.sort_key_u8) 614 fsobjects.sort(key=walk.WalkDirEntry.sort_key_u8)
615 else: 615 else:
616 fsobjects.sort(key=walk.WalkDirEntry.sort_key_fs) 616 fsobjects.sort(key=walk.WalkDirEntry.sort_key_fs)
617 dir_dgst = self._algorithm[0]() 617 dir_dgst = self._algorithm[0]()
692 # 692 #
693 # Follow the symlink to dir or handle a "real" directory 693 # Follow the symlink to dir or handle a "real" directory
694 # 694 #
695 695
696 # Get subdir data from recursing into it 696 # Get subdir data from recursing into it
697 sub_dir_dgst, sub_dir_size = self._generate( 697 sub_dir_algo, sub_dir_dgst, sub_dir_size = self._generate(
698 root, top + (fso.name, )) 698 root, top + (fso.name, ))
699 699
700 if sub_dir_dgst is None or sub_dir_size is None: 700 if (sub_dir_algo is None or sub_dir_dgst is None
701 or sub_dir_size is None):
701 # 702 #
702 # This should not happen: 703 # This should not happen:
703 # - top-level directories are handled above 704 # - top-level directories are handled above
704 # - other filesystem objects should also have been 705 # - other filesystem objects should also have been
705 # handled already 706 # handled already
919 sz = dir_size if self._print_size else None 920 sz = dir_size if self._print_size else None
920 self._writer.write_file_digest( 921 self._writer.write_file_digest(
921 self._algorithm[1], opath, dir_dgst.digest(), 922 self._algorithm[1], opath, dir_dgst.digest(),
922 use_base64=self._use_base64, size=sz) 923 use_base64=self._use_base64, size=sz)
923 self._writer.flush() 924 self._writer.flush()
924 return (dir_dgst.digest(), dir_size) 925 return (self._algorithm[1], dir_dgst.digest(), dir_size)
925 926
926 927
927 def join_output_path(top, name): 928 def join_output_path(top, name):
928 if name is None: 929 if name is None:
929 # a path for a directory is to be computed 930 # a path for a directory is to be computed