: 커밋 메시지와 함께 헤더와 함께,SHA-1 문자열 (자식 해시 객체 문자열)
commit 218\0tree 64a7513fad0b86d34b6feedbf9c2e99135819861 parent 233634213baf3f40236233f28c6646f20786a80a author CTF user <[email protected]> 1390678027 +0000 committer CTF user <[email protected]> 1390678027 +0000 Give me a Gitcoin 200
그것은 자식 hash-object
입력이 . 내가 얻는 결과는 한 방법에서 다른 방법과 매우 다릅니다.
git hash-object를 사용하면 bed6b1001619ad84548d05db65a75ac80bf79f31
이됩니다.
루비의 digest/sha1
을 사용하면 이됩니다.
http://www.sha1-online.com을 사용하면 d543ddbfb7607464f5f964b9a3536eccedd1e1a4
이됩니다.
이것은 매우 혼란 스럽습니다. 어떤 것이고 왜 git-hash-object
의 기능을 모방 할 수 없습니까? http://git-scm.com/book/en/Git-Internals-Git-Objects을 읽고 그곳의 지침을 따르지 만 올바른 해시 다이제스트를 얻을 수없는 것 같습니다. 여기
내 루비 스 니펫된다
Digest::SHA1.hexdigest "commit #{body.length}\0#{body}"
해시 객체 헤더, 또는는 SHA-1을 해시하는 데 사용하는 문자열을 볼 수있는 자식의 방법이 있나요? 위의 내 방법에 어떤 문제가 있습니까?
당신이 시도하고있는 무슨 문제가 완전히 명확하지 않다 해결하다. 이 질문에 대한 답변을보고 싶을 수도 있습니다 - http://stackoverflow.com/questions/552659/assigning-git-sha1s-without-git –
@ D.Shawley git hash-object SHA- 1 값을 git-hash-object 대신 수동으로 사용하십시오. 나는 그 질문을 보았고 정확하게 그 일을하고있다. – darksky
'tree 64a751 ... '로 시작하는 문자열을 어디서 얻었습니까? 실제 git commit과 비교할 때 커밋 데이터에 포함 된 개행 문자가 포함되어 있지만 한 줄에 모두 포함되지는 않습니다. – torek