Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top