Я хочу рассчитать git SHA-хэш без использования функции объекта git hash, то есть я хочу использовать функцию shasum для ее вычисления.Разница в SHA Hash между git hash-object & git hash-object -t
Я знаю, что для следующего случая
body="tree 491e9405120eaaa57cce3938fd38508d85a5e08b
parent 8550f0f1a7e32fb1bb0933b0294c116a8dbe6dce
author user <[email protected]> 1390718030 +0000
committer user <[email protected]> 1390718030 +0000
This is a test"
echo $body | git hash-object -w --stdin #755481b921f13bcfd731d74287a0c5847519ee81
l=`expr ${#body} + 1`
echo -e 'blob $l\0$body' | shasum #755481b921f13bcfd731d74287a0c5847519ee81
хэши одинаковы. Но если я использую параметр -t commit в хэш-объекте, я получаю другой хэш. Как я могу вычислить хеш фиксации с помощью shasum?
git hash-object -t commit --stdin <<< "$body" #b4c45adbbe35d3d3c73de48d039a8e3038f5ec54
Для возникновения этого префикса: HTTP: // StackOverflow .com/a/8276305/6309 – VonC
Хорошо. Есть ли способ узнать, что такое контент, чтобы я мог делать это с SHA1 ??? Это заставляет его работать и для параметра commit, добавив дополнительный контент? –
@RamGAthreya, как показано на http://slidetocode.com/2013/08/25/how-git-works/, вы можете выполнить: 'python -c 'импорт zlib, sys; print repr (zlib.decompress (sys .stdin.read())) "<.git/objects/02/b365d4af3ef6f74b0b1f18c41507c82b3ee571': первое слово будет типом содержимого. – VonC