코드 검토를 위해 Gerrit를 사용하고 있습니다. Gerrit는 비표준 참조 경로 - refs/changes
에서 검토 된 코드를 저장합니다. 그래서 커밋에 대한 참조는 refs/changes/95/295/2
입니다. Gerrit의 프로젝트를 내 수퍼 프로젝트에 하위 모듈로 추가하려고합니다.비 standart refspec에서 서브 모듈을 올바르게 추가하는 방법은 무엇입니까?
나는 두 단계를 수행 할 수 있습니다
- 현재
- 이
git fetch origin refs/changes/95/295/2 && git checkout FETCH_HEAD
을 수행하고 변경 사항을 커밋 마스터가 가리키는 커밋 해시하는 서브 모듈로 내 프로젝트를 추가합니다.
하지만 내 수퍼 프로젝트를 체크 아웃하려고 할 때 git update --init
git보고가 실패합니다. Git은 기본적으로 refs/changes
에 참조를 보지 않았기 때문에 서브 모듈에서 해시를 찾을 수 없으며 객체를 다운로드하지 않습니다.
좋아요, 제 게토 repo에서 git config --add remote.origin.fetch '+refs/changes/*:refs/remotes/origin/changes/*'
을 실행하여 문제를 해결 한 다음 서브 모듈 업데이트를 다시 시도해보십시오. 그러면 문제가 해결됩니다.
질문 : 사용자 워크 플로우에서와 같이 한 단계에서 "추가"및 "초기화/업데이트"하위 모듈을 수행 할 수 있습니까? 기본적으로 "clone"/ "pull"/ "submodule add"/ "sumbodule update"실행 시작 전에 refspec을 설정하는 기능이 필요합니다.
마지막으로 내 자신의 추상화 수준을 git 위에 구현합니다. 그것은 작동하고, 그것은 추합니다. 나는 행복하지 않지만 어쩌면 리누스에게 패치를 제공하는 git 동작을 고칠 수있다. –