Why are we using a custom Git Commit hook
Felipe Sateler
fsateler at debian.org
Tue Sep 27 23:04:40 UTC 2011
On Tue, Sep 27, 2011 at 15:42, Reinhard Tartler <siretart at tauware.de> wrote:
> Hi,
>
> I noticed that our packages use a custom git-commit-hook that is
> installed in /git/pkg-multimedia/git-commit-notice. However, I also
> noticed that other teams seem to use /usr/local/bin/git-commit-notice. I
> wonder why don't use the system wide one too. For reference see the diff
> below:
I will comment on the patch. Beware that I'm using gmail's web
interface so the patch will most likely get garbled.
>
> --- /git/pkg-multimedia/git-commit-notice 2010-09-04 19:49:26.000000000 +0000
> +++ /usr/local/bin/git-commit-notice 2011-05-23 10:26:34.116049606 +0000
> @@ -138,22 +138,19 @@
>
> # Check if we've got anyone to send to
> if [ -z "$recipients" ]; then
> - echo >&2 "*** hooks.recipients is not set so no email will be sent"
> + echo >&2 "*** hooks.mailinglist is not set so no email will be sent"
This I have no idea. Probably a bugfix in the "upstream" script.
> echo >&2 "*** for $refname update $oldrev->$newrev"
> exit 0
> fi
>
> # Email parameters
> - # For ease of mailing list management, we use the pusher's ID
> - # as committer
> - committer="$(id -un)@users.alioth.debian.org"
> - if [ -z "$committer" ] ; then
> - echo >&2 "Could not identify username, not sending email"
> - exit 1
> - fi
> + # The committer will be obtained from the latest existing rev; so
> + # for a deletion it will be the oldrev, for the others, then newrev
> + committer=$(git show --pretty=full -s $rev |
> + perl -M'Encode qw/encode/' -Mencoding=utf-8 -n -e 'print if (s{^Commit: (.*)( <.*>)}{encode("MIME-Q", "\"".$1."\"") . $2}e);')
THe above change was suggested by Loïc. The commits list is moderated
to avoid spam. I changed the script to use the alioth user of the
pusher as the sender, so that they can be whitelisted and avoid having
to manually approve them.
> # The email subject will contain the best description of the ref
> # that we can build from the parameters
> - describe=$(git describe --tags $rev 2>/dev/null)
> + describe=$(git describe $rev 2>/dev/null)
> if [ -z "$describe" ]; then
> describe=$rev
> fi
> @@ -177,7 +174,6 @@
> fi
> for merged in $(git rev-parse --not --branches | grep -v $(git rev-parse $refname) | git rev-list --reverse --stdin $oldrev..$newrev); do
>
> - describe=$(git log --pretty=%s "$merged^..$merged")
> generate_commit_log $merged | $sendmail
>
> if [ -n "$cia_project" ]; then
> @@ -204,8 +200,7 @@
> echo "Reply-To: $reply_to"
> fi
> cat <<-EOF
> - Date: `date --rfc-2822`
> - Subject: ${EMAILPREFIX}$projectdesc $refname_type, $short_refname, ${change_type}d. $describe
> + Subject: ${EMAILPREFIX}$subjectdesc $refname_type, $short_refname, ${change_type}d. $describe
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> X-Git-Refname: $refname
> @@ -229,14 +224,8 @@
> generate_commit_log()
> {
> rev=$1
> - # Again, use the pushers ID instead of committe
> - committer="$(id -un)@users.alioth.debian.org"
> -
> - if [ "$GIT_DIR" = "." ] ; then
> - repo=$(basename $(pwd) .git)
> - else
> - repo=$(basename $GIT_DIR .git)
> - fi
> + committer=$(git show --pretty=full -s $rev |
> + perl -M'Encode qw/encode/' -Mencoding=utf-8 -n -e 'print if (s{^Commit: (.*)( <.*>)}{encode("MIME-Q", "\"".$1."\"") . $2}e);')
>
> cat <<-EOF
> From: $committer
> @@ -247,7 +236,7 @@
> echo "Reply-To: $reply_to"
> fi
> cat <<-EOF
> - Subject: ${EMAILPREFIX}$repo/$short_refname: $describe
> + Subject: ${EMAILPREFIX}$subjectdesc $refname_type, $short_refname, ${change_type}d. $describe
This and the above are to send more meaningful subjects in the commit messages.
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> X-Git-Refname: $refname
> @@ -670,6 +659,11 @@
> envelopesender=$(git repo-config hooks.envelopesender)
> cia_project=$(git repo-config hooks.cia-project)
> sendmail="/usr/sbin/sendmail -t"
> +subjectdesc=$(git repo-config hooks.subjectdesc)
> +
> +if [ -z "$subjectdesc" ]; then
> + subjectdesc=$projectdesc
> +fi
This I don't know about.
--
Saludos,
Felipe Sateler
More information about the pkg-multimedia-maintainers
mailing list