Revision 9e475a702a3b475a4edd5aca4f01f8f03b6e4f78 authored by Valentin Lorentz on 03 July 2020, 15:10:08 UTC, committed by Valentin Lorentz on 07 July 2020, 11:31:05 UTC
1 parent af0dd1a
Raw File
swh-revhash
#!/usr/bin/env python3

# Use:
# swh-revhash 'tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\nparent 22c0fa5195a53f2e733ec75a9b6e9d1624a8b771\nauthor seanius <seanius@3187e211-bb14-4c82-9596-0b59d67cd7f4> 1138341044 +0000\ncommitter seanius <seanius@3187e211-bb14-4c82-9596-0b59d67cd7f4> 1138341044 +0000\n\nmaking dir structure...\n'  # noqa
# output: 17a631d474f49bbebfdf3d885dcde470d7faafd7

# To compare with git:
# git-revhash 'tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904\nparent 22c0fa5195a53f2e733ec75a9b6e9d1624a8b771\nauthor seanius <seanius@3187e211-bb14-4c82-9596-0b59d67cd7f4> 1138341044 +0000\ncommitter seanius <seanius@3187e211-bb14-4c82-9596-0b59d67cd7f4> 1138341044 +0000\n\nmaking dir structure...\n'   # noqa
# output: 17a631d474f49bbebfdf3d885dcde470d7faafd7


import sys

from swh.model import identifiers, hashutil


def revhash(revision_raw):
    """Compute the revision hash.

    """
    # HACK: string have somehow their \n expanded to \\n
    if b"\\n" in revision_raw:
        revision_raw = revision_raw.replace(b"\\n", b"\n")

    h = hashutil.hash_git_data(revision_raw, "commit")
    return identifiers.identifier_to_str(h)


if __name__ == "__main__":
    revision_raw = sys.argv[1].encode("utf-8")
    print(revhash(revision_raw))
back to top