Обучение и трудоустройство Java-программистов от Junior до Senior

Gerrit + git

 
 
 
Сообщения:179
Коллеги, добрый день.
Все бьюсь над одной задачей.
Пытаюсь синтегрировать git, gerrit и jenkins.
Делаю коммит и пуш на сервер. jenkins срабатывает и начинает свой job, собирает проект.
но gerrit никак не реагирует на пуши. Приходится в геррите открывать проект и создавать на него change.
Неужели это не автоматом генерируется? Я себе представляю воркфлоу таким образом: я создаю пуш на сервер, генерируется событие, автоматом создается change и отправляется уведомление на почту.
 
 
Сообщения:9570
- Обычный пуш (git push origin master или git push origin HEAD:refs/heads/master) - это добавить коммит в целевую ветку. После него удаленный master ссылается на новый коммит. Похоже ты делаешь именно это.
- Создание change (git push origin HEAD:refs/for/master) - это создание запроса на ревью. Т.е. удаленная ветка никак не меняется пока это изменение не принято.
Изменен:02 сен 2017 06:12
 
 
Сообщения:179
Староверъ:
- Обычный пуш (git push origin master или git push origin HEAD:refs/heads/master) - это добавить коммит в целевую ветку. После него удаленный master ссылается на новый коммит. Похоже ты делаешь именно это.
- Создание change (git push origin HEAD:refs/for/master) - это создание запроса на ревью. Т.е. удаленная ветка никак не меняется пока это изменение не принято.


А когда делаю:
git.exe push --progress "origin" master:refs/for/master
Выводит
Everything up-to-date
Хотя я вношу изменения.
 
 
Сообщения:179
Староверъ:
- Обычный пуш (git push origin master или git push origin HEAD:refs/heads/master) - это добавить коммит в целевую ветку. После него удаленный master ссылается на новый коммит. Похоже ты делаешь именно это.
- Создание change (git push origin HEAD:refs/for/master) - это создание запроса на ревью. Т.е. удаленная ветка никак не меняется пока это изменение не принято.


Получилось отправить. На сервере в gerrit не вижу нового изменения, но когда открываю tortoiseGit вижу, что появилась ветка refs/for/master и там вновь созданные коммиты.
Но по-прежнему, change не создаются автоматом.
Не могли бы Вы указать свойства своего проекта. У меня вот так:
[access]
inheritFrom = All-Projects
[submit]
action = fast forward only
mergeContent = false
[receive]
createNewChangeForAllNotInTarget = true

Может проблема именно в настройках проекта?
 
 
Сообщения:179
Geksa1:
Староверъ:
- Обычный пуш (git push origin master или git push origin HEAD:refs/heads/master) - это добавить коммит в целевую ветку. После него удаленный master ссылается на новый коммит. Похоже ты делаешь именно это.
- Создание change (git push origin HEAD:refs/for/master) - это создание запроса на ревью. Т.е. удаленная ветка никак не меняется пока это изменение не принято.


Нашла еще , что после команды $ git push origin HEAD:refs/for/master
должно быть что-то вроде:
$ git push origin HEAD:refs/for/master
Counting objects: 3, done.
Writing objects: 100% (3/3), 224 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: New Changes:
remote: https://gerrit/337
remote:

У меня не появляется ответ: remote:..
Это клиентский хук должен делать или сам геррит?
 
 
Сообщения:9570
Клиентский хук нужен - он проставляет Change ID в сообщение коммита. Из доки:
scp -p mygerrit:hooks/commit-msg .git/hooks/
Я не помню обязателен ли Change ID для создания patchset'a (геррита счас под рукой нет), но попробуй с хуком.
 
 
Сообщения:179
Староверъ:
Клиентский хук нужен - он проставляет Change ID в сообщение коммита. Из доки:
scp -p mygerrit:hooks/commit-msg .git/hooks/
Я не помню обязателен ли Change ID для создания patchset'a (геррита счас под рукой нет), но попробуй с хуком.


Пробую с хуком, Change-Id генерируется, все ок. Но все равно change в геррите не создается.
Кстати, Change-Id не обязателен.
 
 
Сообщения:179
Староверъ:
Клиентский хук нужен - он проставляет Change ID в сообщение коммита. Из доки:
scp -p mygerrit:hooks/commit-msg .git/hooks/
Я не помню обязателен ли Change ID для создания patchset'a (геррита счас под рукой нет), но попробуй с хуком.

Из доки:
Gerrit uses the refs/for/ prefix to map the concept of "Pushing for Review" to the git protocol. For the git client, it looks like every push goes to the same branch, such as refs/for/master. In fact, for each commit pushed to this ref, Gerrit creates a new ref under a refs/changes/ namespace, which Gerrit uses to track these commits. These references use the following format:
refs/changes/[CD]/[ABCD]/[EF]

То есть, при каждом пуше коммита в ветку refs/for/master, автомаьтом должна генерироваться запись в refs/changes/. По факту у меня не работает. При пуше коммита запись в refs/for/master вносится, но при этом не создается в refs/changes/.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет