Геррит слитый крючком - PullRequest
       5

Геррит слитый крючком

3 голосов
/ 18 февраля 2012

Я использую git в качестве моей системы контроля версий и настроил сайт Gerrit для проверки кода.Я хотел бы создать ловушку для выполнения следующих действий:

  • Когда администратор нажимает кнопку Отправить, файл (называемый version.txt ) должен быть изменен.
  • Сценарий должен открыть файл.
  • Найти следующий текст (где идентификатор может измениться)

    #version Change-Id: Ie1411d50f6beb885bc3d3b7d8c587635e1446c18

  • Замените Change-Id на Change-Id нового патча.

  • Итак, если объединяемый патч имеет Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82, то version.txt файл должен содержать следующую строку после запуска скрипта:

    #version Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82

  • Тогда хук должен создать новый коммит (так как теперь в одном из изменений произошлофайлы) и нажмите этот последний коммит на master.

Я чувствую, что это было бы возможно при использовании change-merged hook.Я прав?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Примерно так:

#!/bin/sh

# See link below for actual command line format
# you may need to make the argument parsing more robust
CHANGE_ID=$2

git clone ${GIT_DIR} /tmp/repo-${CHANGE_ID}
echo "#version Change-Id: ${CHANGE_ID}" > /tmp/repo-${CHANGE_ID}/version.txt
GIT_DIR=/tmp/repo-${CHANGE_ID}/
cd /tmp/repo-${CHANGE_ID}/
git add /tmp/repo-${CHANGE_ID}/version.txt
git commit -m'Auto-updated version'
git push origin master
rm -rf /tmp/repo-${CHANGE_ID}/

http://gerrit -documentation.googlecode.com / svn / Documentation / 2.2.2 / config-hooks.html # _change_merged

В принципе, я не фанат этого подхода, и я думаю, что лучше это сделать на выходе (например, скрипт "install.sh", который может использовать команды git для извлечения хеша ревизии,и сгенерируйте файл version.txt оттуда).Но что-то подобное должно направить вас в правильном направлении.Это не проверено, но должно работать.

0 голосов
/ 15 июня 2017

Лучше сделать это наоборот -

Вместо того, чтобы делать "непроверенное" изменение в коммите, за спиной Геррита,
поставить git-tag об этом коммите.

Подробнее см. Git - Tagging

...