Получить ha sh для фиксации в сценарии python с сервера bitbucket - PullRequest
1 голос
/ 09 июля 2020

Я хотел бы знать, можно ли получить ha sh фиксации в сценарии Python.

Для данного сценария я могу легко определить ha sh из blob, используя простую формулу и код, например:

from sys import argv
from hashlib import sha1
from cStringIO import StringIO

class githash(object):
    def __init__(self):
        self.buf = StringIO()

    def update(self, data):
        self.buf.write(data)

    def hexdigest(self):
        data = self.buf.getvalue()
        h = sha1()
        h.update("blob %u\0" % len(data))
        h.update(data)

        return h.hexdigest()

def githash_data(data):
    h = githash()
    h.update(data)
    return h.hexdigest()

def githash_fileobj(fileobj):
    return githash_data(fileobj.read())


if __name__ == '__main__':
    for filename in argv[1:]:
        fileobj = file(filename)
        print(githash_fileobj(fileobj))

Source

Однако этот метод вычисления того же ha sh, что и git делает для данного файла, похоже, не работает для полной фиксации. Формула, описанная здесь Фон C, мне не понятна. Есть ли способ либо вычислить эту фиксацию ha sh в python, либо получить ее напрямую с сервера битбакета?

Изменить: я только что обнаружил Stashy . Я разберусь с этим.

...