programing

git push gerrit HEAD:refs/for/master가 git push origin master 대신 사용되는 이유

javamemo 2023. 11. 6. 21:36
반응형

git push gerrit HEAD:refs/for/master가 git push origin master 대신 사용되는 이유

이제 막 게릿을 사용하기 시작했는데 왜 우리가 해야 하는지 알고 싶습니다.git push gerrit HEAD:refs/for/master하는 대신에git push origin master

하게되면git push origin master나는 오류를 이해합니다.! [remote rejected] master -> master (prohibited by Gerrit)

Gerrit에 대한 문서, 특히 "Push changes" 섹션은 당신이 "Magical"로 밀고 나간다는 것을 설명합니다.refs/for/'branch'모든 Git 클라이언트 도구를 거부합니다."

다음 이미지는 인트로게릿에서 찍은 것입니다.게릿을 밀면, 당신은.git push gerrit HEAD:refs/for/<BRANCH>. 그러면 변경사항이 준비 영역으로 이동합니다(그림의 "변경 보류 중").게릿은 사실 '게릿'이라는 지점이 없습니다<BRANCH>; 깃 고객에게 거짓말을 합니다.

내부적으로 Git 및 SSH 스택에 대한 Gerrit 자체 구현이 있습니다.이를 통해 "마법"을 제공할 수 있습니다.refs/for/<BRANCH>참고문헌

이러한 네임스페이스 중 하나에 Ref를 만들기 위한 푸시 요청이 수신되면 Gerrit은 자체 로직을 수행하여 데이터베이스를 업데이트한 다음 작업 결과에 대해 클라이언트에 거짓말을 합니다.성공적인 결과가 나오면 고객은 게릿이 심판을 만들었다고 믿지만 실제로는 게릿이 심판을 전혀 만들지 않았습니다.[링크 - 게릿, "Gritty Details"].

The Gerrit workflow

패치를 성공적으로 적용한 후(즉, 패치를 Gerrit에게 푸시하고 [변경 보류 중] 단계 영역에 넣고 검토한 후 검토를 통과) Gerrit는 변경 내용을 "변경 보류 중"에서 "권한 저장소"로 푸시하고, 푸시할 때 수행한 마법을 기반으로 해당 변경 내용을 푸시할 분기를 계산합니다.refs/for/<BRANCH>. 이렇게 하면 성공적으로 검토된 패치를 올바른 분기에서 직접 꺼낼 수 있습니다.Authoritative Repository.

git push 명령을 완전히 지정할 필요가 없도록 git config 파일을 수정할 수 있습니다.

[remote "gerrit"]
    url = https://your.gerrit.repo:44444/repo
    fetch = +refs/heads/master:refs/remotes/origin/master
    push = refs/heads/master:refs/for/master

이제 간단하게 다음을 수행할 수 있습니다.

git fetch gerrit
git push gerrit

게릿에 의하면 이건

언급URL : https://stackoverflow.com/questions/10461214/why-is-git-push-gerrit-headrefs-for-master-used-instead-of-git-push-origin-mast

반응형