Gerrit HEAD: изменение ссылок / публикаций / мастер-блоков
При попытке загрузить мои изменения в Gerrit с git review
Я получаю это сообщение об ошибке:
Fetching gerrit
2018-01-26 13:33:52.161429 Running: git rev-parse HEAD
2018-01-26 13:33:52.166465 Running: git show-ref --quiet --verify refs/remotes/gerrit/master
2018-01-26 13:33:52.172314 Running: git rebase -p -i remotes/gerrit/master
2018-01-26 13:33:53.075322 Running: git reset --hard b8fb53d42c568aaed3216758076b5a5d2df6ebc6
2018-01-26 13:33:53.086334 Running: git config --get-colorbool color.review true
2018-01-26 13:33:53.091360 Running: git log --color=always --decorate --oneline HEAD --not --remotes=gerrit
2018-01-26 13:33:53.098427 Running: git rev-parse --symbolic-full-name --abbrev-ref HEAD
2018-01-26 13:33:53.105430 Running: git log --pretty='%B' HEAD^1..HEAD
Using local branch name "master" for the topic of the change submitted
2018-01-26 13:33:53.113735 Running: git push gerrit HEAD:refs/publish/master
fatal: One or more refs/publish/ names blocks change upload
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Мой ключ SSH работает; Я могу ssh клонировать проекты из Gerrit без ошибок; а также git review -s
работает правильно. Мой конфиг git:
remote.origin.url=git@gitlab.test.lt:tt-java/service-client.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.gerrit.url=ssh://test.test@review.test.lt:29418/service-client.git
remote.gerrit.fetch=+refs/heads/*:refs/remotes/gerrit/*
gerrit ssh://test.test@review.test.lt:29418/service-client.git (fetch)
gerrit ssh://test.test@review.test.lt:29418/service-client.git (push)
origin git@gitlab.test.lt:tt-java/service-client.git (fetch)
origin git@gitlab.test.lt:tt-java/service-client.git (push)
git review
был установлен через доморощенный на OSX. Я читал о публикации в refs/for/master
, но получает ту же ошибку. Есть идеи, что здесь не так?
1 ответ
ссылки / опубликовать и ссылки / для
refs/publish/*
это просто альтернативное имя для refs/for/*
- нет разницы, используя один из них.
Проблема
Ваш репозиторий сервера имеет ветку под refs/for/
Пространство имен. Геррит отказывается работать, когда это происходит, потому что сейчас refs/for/
(которая обычно является "магической" ветвью) на самом деле является реальной веткой в репозитории Git.
Эта ветка, вероятно, была создана по ошибке для пользователя, направляющего непосредственно в репозиторий Git, а не в порт Gerrit SSH.
Как исправить
Чтобы увидеть, какие ссылки уже существуют, администратор Gerrit должен перейти в этот конкретный репозиторий и выполнить:
git for-each-ref refs/for
Ему нужно удалить все эти ссылки или переименовать их в другое имя. Обычно безопасно удалить все из них, выполнив следующее:
for n in $(git for-each-ref --format='%(refname)' refs/for); do git
update-ref -d $n; done
Больше информации
Смотрите здесь.