ошибка в вычислении хеш-объекта с содержанием символа '1'? - PullRequest
0 голосов
/ 16 марта 2019

У меня есть файл git (например, file1.txt), и внутри него у меня есть символ 1.
echo -e 1 | git hash-object --stdin => d00491...39d4d.
но это не нормально с
echo -en 'blob 2\01\n' | shasum ==>a1ff5...f6df потому что он не рассматривает 1 как символ и вычисляет \01 как отдельный символ. => blob 2

Я обнаружил, что этот тип конвертации не работает с числовым контентом.

но начинать с алфавита - это хорошо !! такие как.
echo -e 'blob 2\0w' | shasum ==> e556b8...52ef.
echo w | git hash-object --stdin ==> e556b830c...052ef.

есть идеи для хеш-объекта calc, начиная с чистого числового содержимого?

1 Ответ

2 голосов
/ 16 марта 2019
echo -en 'blob 2\01\n' | cat -v

не дает того, что вы хотите, результат blob 2^A вместо blob 2^@1.

То, что вы хотите, это

echo -en 'blob 2\00001\n' | cat -v
blob 2^@1

Это потому, что \0 запускает числовую последовательность для echo, а затем echo ожидает до 3 цифр. То есть \01 для echo - это 1 символ с кодом 1; для получения \0 + 1 необходимо использовать \0000 для символа с кодом 0, затем следующие символы равны 1.

echo -en 'blob 2\00001\n' | sha1sum 
d00491fd7e5bb6fa28c517a0bb32b8b506539d4d  -

Voila!

...