# HG changeset patch # User Franz Glasner # Date 1736274032 -3600 # Node ID df927ada9a37ffcd42be3a573415b7ce9c91c9dd # Parent 432fe71300d317d7f34d96eb5579714d654b3962 In directory digests: include the octet-length of the checksums also diff -r 432fe71300d3 -r df927ada9a37 cutils/treesum.py --- a/cutils/treesum.py Tue Jan 07 12:55:55 2025 +0100 +++ b/cutils/treesum.py Tue Jan 07 19:20:32 2025 +0100 @@ -321,7 +321,8 @@ linkdgst.update(b"%d:%s," % (len(linktgt), linktgt)) dir_dgst = algorithm[0]() dir_dgst.update(b"1:L,") - dir_dgst.update(linkdgst.digest()) + dir_dgst.update( + b"%d:%s," % (len(linkdgst.digest()), linkdgst.digest())) outfp.write( format_bsd_line( algorithm[1], @@ -344,7 +345,9 @@ dir_dgst.update(b"1:S,%d:%s," % (len(fso.fsname), fso.fsname)) # no mtime and no mode for symlinks - dir_dgst.update(linkdgst.digest()) + dir_dgst.update( + b"%d:%s," + % (len(linkdgst.digest()), linkdgst.digest())) opath = "/".join(top) + "/" + fso.name if top else fso.name outfp.write( format_bsd_line( @@ -357,7 +360,8 @@ # fetch from dir_digests dgst = dir_digests[top + (fso.name,)] dir_dgst.update(b"1:d,%d:%s," % (len(fso.fsname), fso.fsname)) - dir_dgst.update(dgst) + dir_dgst.update( + b"%d:%s," % (len(dgst), dgst)) if with_metadata_full_mode: modestr = normalized_mode_str(fso.stat.st_mode) if not isinstance(modestr, bytes): @@ -391,7 +395,7 @@ dir_dgst.update(b"4:mode,%d:%s," % (len(modestr), modestr)) dgst = digest.compute_digest_file( algorithm[0], fso.path, use_mmap=use_mmap) - dir_dgst.update(dgst) + dir_dgst.update(b"%d:%s," % (len(dgst), dgst)) opath = "/".join(top) + "/" + fso.name if top else fso.name outfp.write( format_bsd_line(