Вопрос по git – Почему git push gerrit HEAD: refs / for / master используется вместо git push origin origin

127

Я только начал использовать геррит, и я хочу знать, почему мы должны сделатьgit push gerrit HEAD:refs/for/master вместо того, чтобы делатьgit push origin master

Если я сделаюgit push origin master Я получаю сообщение об ошибке! [remote rejected] master -> master (prohibited by Gerrit)

Ваш Ответ

2   ответа
233

& quot; Нажмите изменения & quot; в разделе объясняется, что вы нажимаете на "волшебныйrefs/for/'branch' ref используя любой инструмент клиента Git & quot ;.

Следующее изображение взято изВведение в Геррит, Когда вы нажимаете на Геррита, вы делаетеgit push gerrit HEAD:refs/for/<BRANCH>, Это подталкивает ваши изменения кstaging area (на диаграмме "Ожидающие изменения"). Геррит на самом деле не имеет ответвления<BRANCH>; это ложь клиенту git.

Внутри у Gerrit есть собственная реализация стеков Git и SSH. Это позволяет ему предоставлять «волшебный»refs/for/<BRANCH> рефов.

When a push request is received to create a ref in one of these namespaces Gerrit performs its own logic to update the database, and then lies to the client about the result of the operation. A successful result causes the client to believe that Gerrit has created the ref, but in reality Gerrit hasn’t created the ref at all. [Link - Gerrit, "Gritty Details"].

The Gerrit workflow

После успешного исправления (т. Е. Исправление было передано Gerrit, [помещено в «промежуточную область Pending Changes», просмотрено, и проверка пройдена), Gerrit выдвигает изменение из «Pending Changes» в «Авторитетный репозиторий», вычисляя, в какую ветку его нужно подтолкнуть, основываясь на магии, которую он совершил, когда вы нажали наrefs/for/<BRANCH>, Таким образом, успешно проверенные патчи могут быть извлечены непосредственно из правильных ветвейAuthoritative Repository.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Shrayas
51

вы можете изменить свой конфигурационный файл git:

[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

Это согласноГеррит

Error: User Rate Limit Exceededremote.origin.pushError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededgit fetchError: User Rate Limit Exceededgit pushError: User Rate Limit Exceeded

Похожие вопросы