2017-10-17 4 views
0

오히려 이론적 인 질문이지만, 누군가가 실용적인 구현을 알고 있다면, 나는 그것을 듣고 싶습니다.git 사용자 정의 커밋 ID?

git은 커밋 ID에 SHA1을 사용합니다. 문제는이 키를보고 아무 것도 말할 수 없다는 것입니다. 예, git help로이 자식 자식 커밋 ID에 대한 거의 모든 것을 찾을 수 있지만, 그것에 대해서는 으로 말하면 아무 것도 말할 수 없습니다.입니다. 그리고 때때로 그것은 편리 할 것입니다.

커밋 ID가 SHA1 + authorid + creation_time 인 경우 사용하는 것이 더 간단합니다.

git에 이러한 유형의 커밋 ID가없는 간단한 이유가 있지만 확실하지 않습니다. 아는 사람 있나요?

+0

이 날 것으로 보인다 "사용하기 쉬운이"무엇에 대한 가정이 많이있다 도구 설정에 전적으로 의존합니다. SHA ID는 시스템의 기술적 요구 사항을 충족시키기 위해 마련되었습니다. 아마도 사용자가 노출되는 사용자 친화적 인 방식 일 수 있습니다. 따라서 나는 사용자 지향 데이터를 특정 데이터 요소로 믹싱하는 것이 도움이된다고 확신하지는 않습니다. –

답변

3

근본적이거나 기술적 인 이유로 힘내는이 정보를 각 해시에 추가 할 수 없습니다. 그것은 아직 존재하지 않는 기능을 추가 할 것입니다. 사용자가 제어하는 ​​이름의 주석 태그를 간단하게 작성할 수 있습니다. 그러면 삽입하려는 보조 데이터와 함께 원하는 커밋의 해시 ID가 포함됩니다.

다른 말로하면, 제안 할 수있는 것은 일할 수도 있고, 태그가 더 필요하지 않을 수도 있으며, 더욱 까다로운 해시 ID를 희생해야합니다. 그것이 현재의 상황에 대한 개선이라고 할 수있는 좋은 절충안은 의견의 문제입니다. :-)

(힘내, 또는 기타 유사한 VCS는, 해시에서 필요로 무엇에 대한 설명은 chapter 4, Distributing Repositories, of my extremely-slow-progress book를 참조하십시오.)

+0

또한 Git은 나무와 얼룩에 대해 동일한 유형의 ID를 사용합니다.이 ID는 최종 작성자 또는 작성 시간이 없을 수 있습니다. –

+0

@DanielH : 참. 힘내 (Git)가 SHA-256 처리 (다중 해시 색인 테이블을 유지해야 함)를 획득하면 추가 데이터를 유지하고 검사하는 것이 가능해질 수 있지만 힘내 핵심 부분이 추가 된 데이터를 완전히 무시할 수 있다고 생각합니다. (그러나 가변 길이로 만드는 것은 속도가 중요한 부분의 관점에서 약간 끈적입니다.) – torek

+0

해시에서 인코딩 할 추가 정보의 문제가 항상 존재합니다. 그래서 Git에서 구현 된 접근 방식은 커밋 메시지 자체에서 자유 형식 키워드를 사용하여 필요한 모든 것을 인코딩 한 다음 필요할 때 구문 분석하여보다 합리적인 방법입니다. 확실히, 그것은 "... 단지 해시"속성을 보지만 그 방법은 더 유연합니다. – kostix