2016-08-25 3 views
1

LibGit2Sharp를 사용하여 원래 커밋이 만들어진 지점을 검색하려면 어떻게해야합니까? 여러 개의 커밋을 갖고 나중에 약간의 시간이 병합되는 두 개의 분기 (development, feature1)가 있다고 가정합니다. 모든 커밋과 그들이 속한 브랜치를 검색 할 때 모든 커밋은 두 브랜치와 연결됩니다. 따라서 원본 소스 브랜치를 판별하는 것은 불가능합니다.원래 LibGit2Sharp를 사용하여 커밋이 생성 된 분기를 검색하는 방법은 무엇입니까?

감사합니다.

답변

1

힘내라는 어떤 정보를 저장하더라도, 어떤 정보도 검색 할 수 없다는 것을 의미합니다.

지점 이름은 대부분 임시하며 원할 때마다 하나주의해야 할 점으로, 생성 및 파괴 될 수있다 : a는 그 어떤 이름은 가비지 콜렉션이 적용됩니다 에 의해 도달 할 수없는 커밋합니다. 그러나 커밋 C이 지점 이름 B1, B2, B3에서 도달 가능한 경우 커밋 C은 세 가지 분기 모두에 포함됩니다. 이름을 B2으로 삭제하고 C은 이제 B1B3 분기 내에 포함됩니다. 커밋 보호

(이름은 지점 이름이 될 필요는 없다. 태그 이름 또는 stash 참조, 또는 원격 추적 브랜치 이름 또는 어디서나 refs 네임 스페이스, 접미사의 다른 이름 [완전한 목록은 아니지만 정상적인 모든 신뢰할 수있는 경우를 다룹니다.]이 규칙은 다른 모든 보호 된 커밋에도 재귀 적으로 적용됩니다. C에 보호 된 커밋 P에서 연결할 수 있으면 C도 보호되며 CC에서 모든 커밋을 보호합니다.

+0

설명해 주셔서 감사합니다. – codelab

1

아니요, 가능하지 않습니다 ... 힘줄은 포인터이며 분기 이름은 커밋 메타 데이터에 기록되어 있지 않습니다. 일단 옮겨지면 과거를 알아낼 수 없다 (git이나 libgit2sharp로).

해결책은 커밋과 관련된 줄이 아직 거기에 있으면 너무 자주 로그 파일에서 제거되지 않은 경우 분기 reflog를 구문 분석하는 것입니다.

하지만 나는 그런 필요성을 이해하지 못합니다. 일반적으로 유용한 선물입니다. 마녀 가지에 커밋이 있습니다.

아마도 잘못된 버전 전략입니까? 출시 할 때 커밋 쇼를 저장하는 것은 좋은 생각입니다 ...

관련 문제