diff --git a/swh/provenance/tools/revisions_sort.py b/swh/provenance/tools/revisions_sort.py index 896d8b0..54953e4 100755 --- a/swh/provenance/tools/revisions_sort.py +++ b/swh/provenance/tools/revisions_sort.py @@ -1,47 +1,47 @@ #!/usr/bin/env python from datetime import datetime import gzip import sys from swh.model.hashutil import hash_to_bytes, hash_to_hex if __name__ == "__main__": if len(sys.argv) != 3: print("usage: revisions_sort ") exit(-1) infilename = sys.argv[1] outfilename = sys.argv[2] with gzip.open(infilename, "rt") as infile: revisions = [] sort = False for idx, line in enumerate(infile.readlines(), start=1): if line.strip(): - splitted = line.split(",") - revision = hash_to_bytes(splitted[0]) - date = datetime.fromisoformat(splitted[1]) - root = hash_to_bytes(splitted[2]) + split = line.split(",") + revision = hash_to_bytes(split[0]) + date = datetime.fromisoformat(split[1]) + root = hash_to_bytes(split[2]) assert date is not None if revisions: last = revisions[-1] if date < last[1]: print("Out of order", last, f"({revision},{date},{root})") sort = True revisions.append((revision, date, root)) if sort: revisions = sorted(revisions, key=lambda rev: rev[1]) date = None with gzip.open(outfilename, "wt") as outfile: for rev in revisions: assert date is None or date <= rev[1] date = rev[1] outfile.write( f"{hash_to_hex(rev[0])},{rev[1]},{hash_to_hex(rev[2])}\n" )