#!/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))