фатальная ошибка в команде git push - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь отправить изменение в Gerrit, используя следующую команду,

git push origin HEAD:refs/for/audi

но я получаю следующую ошибку:

fatal: One or more refs/for/ names blocks change upload
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Я пробовал другие решения на SO и других сайтах, но безуспешно, например:

https://review.typo3.org/Documentation/error-change-upload-blocked.html

Команда:

git for-each-ref refs/for

ничего не возвращает.

Я застрял для доставки важного программного обеспечения клиенту, пожалуйста, помогите.

Примечание : Ответ для git remote выглядит следующим образом:

git remote -v

origin ssh: //14.140.172.187: 29418 / android_m / hlos / platform / build (Выборка)

origin ssh: //14.140.172.187: 29418 / android_m / hlos / platform / build (push)

1 Ответ

0 голосов
/ 12 мая 2018

Хотя у вас может не быть локальных refs/for ветвей для удаления (поскольку вы упоминаете, что команда git for-each-ref refs/for ничего не возвращает), документация Gerrit для этого сообщения об ошибке предусматривает:

Ветви под пространством имен 'refs/for/' могут создавать пользователи, которые обходят Gerrit и отправляют напрямую в сам git-репозиторий (не используя SSH-порт сервера Gerrit) .

Итак, сначала проверьте, на что ссылается источник (это должен быть сервер Gerrit), с помощью git remote -v.
Но также проверьте и окончательное репо, переданное через репозиторий Gerrit: здесь нет /refs/for ветка должна быть.Именно в в удаленном репо вы должны удалить любые refs/for ветви.

https://gerrit-documentation.storage.googleapis.com/Documentation/2.15.1/images/intro-quick-central-gerrit.png

«Этот» репо означает «авторитетный»"repo.

Если у вас есть право нажать прямо на этот удаленный репозиторий (опять же, не на Gerrit, а на тот, на который Gerrit должен выдвигать), вам нужно удалить эти удаленные ветви.
Клонируйте репо, примените команду, указанную в документе:

for n in $(git for-each-ref --format='%(refname)' refs/for);
    do git update-ref -d $n; done

Затем нажмите git push --mirror.

Если у вас нет прав на удаленный клиентрепо, свяжитесь с клиентом и попросите выполнить очистку в этом целевом репо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...