Я хотел бы знать, можно ли получить 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 . Я разберусь с этим.