Gerrit change-merged Hook

a 夏天 提交于 2019-12-06 08:13:53

问题


I use git as my version control system and have set up a Gerrit site to do the code review. I would like to create a hook to do the following:

  • When the admin clicks the Submit button, a file (called version.txt) should be modified.
  • Script should open the file.
  • Find the following text (where the ID may change)

    #version Change-Id: Ie1411d50f6beb885bc3d3b7d8c587635e1446c18

  • Replace the Change-Id with the Change-Id of the new patch.

  • So, if the patch being merged has the Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82 then the version.txt file should contain the following string after the script is run:

    #version Change-Id: I1c25f7b967084008b69a6a8aefa6e3bb32967b82

  • Then the hook should create a new commit (since now there has been a change in one of the files) and push this last commit to master.

I feel this would be possible using a change-merged hook. Am I right?

Thanks in advance.


回答1:


Something like this:

#!/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

On principle, I'm not a fan of this approach, and I think it should be better done on the way out (e.g., a "install.sh" script, which can use git commands to extract the revision hash, and generate a version.txt file from there). But something like this should put you in the right direction. This is untested, but it should work.




回答2:


Better to do it the other way around -

Instead of doing an "un-verified" change to a commit, behind Gerrit's back,
put a git-tag on that commit.

For more details, see Git - Tagging



来源:https://stackoverflow.com/questions/9336804/gerrit-change-merged-hook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!