Re: Problems with Trigger Scripts and CVS Pre-Commit Hooks

Yaron Yogev <[email protected]>
Newsgroups gmane.comp.version-control.cvs.general
Organization http://groups.google.com
Message-ID <[email protected]>
On Jul 27, 12:51 pm, Traiano Welcome
<[email protected]> wrote:
> No luck, from the debug below, I see "%{s}" being interpreted literally:
>
> ---
>
> [traianow@box ~/cvswork/ZONES]$ cvs commit DB.evasive.org.za
>
> + echo %{s}
> + cut -d . -f 2,3,4,5,6
> + ZONE=%{s}
> + ZONE_FILE=DB.%{s}
> + named-checkzone %{s} DB.%{s}
>
> zone %{s}/IN: loading from master file DB.%{s} failed: file not found
>
> cvs commit: Pre-commit check failed
> cvs [commit aborted]: correct above errors first!
>
> ----
>
> On 2010/07/27 10:42 AM, "Yaron Yogev" <[email protected]> wrote:
>
>
>
>
>
> > Hi,
>
> > change %s --> %{s}
>
> > Yaron
>
> > On Jul 27, 10:24 am, Traiano Welcome
> > <[email protected]> wrote:
> >> Hi Yaron
>
> >> The specific line is as follows:
>
> >>  ---
> >> named.data/ZONES/* /usr/local/bin/checkzone %s
> >>  ---
>
> >> This line is preceded by:
>
> >> ---
> >> ALL            $CVSROOT/CVSROOT/checkscript
> >> ---
>
> >> Which is a script run on all files commited.
>
> >> Traiano
>
> >> On 2010/07/26 9:31 AM, "Yaron Yogev" <[email protected]> wrote:
>
> >> Hi,
>
> >> Could you post the relevant line from the commitinfo file in CVSROOT
> >> directory your repository ?
>
> >> I have a similar case, and the commitinfo line looks like this:
> >> ALL /usr/local/bin/cvs_commit_verify  %r %p %m %{s}
>
> >> - ALL: means the script is called for any commit
> >> - /usr/local/bin/cvs_commit_verify: the name of the script to run
> >> (the rest of the explanations I just copied from the commitinfo
> >> header)
> >> - %r = repository (path portion of $CVSROOT)
> >> - %p = path relative to repository
> >> - %m = log message
> >> - %{s} = file name, file name, ...
>
> >> Yaron
>
> >> On Jul 24, 12:50 pm, Traiano Welcome
>
> >> <[email protected]> wrote:
> >>> Hi List
>
> >>> I use cvs to manage BIND9 DNS zone files, and would like to create a
> >>> pre-commit hook that will run a syntax checker on the zone file before it's
> >>> committed. To do this, I have a shell wrapper that takes the name of the
> >>> zone file as an argument and formats a command for the syntax checker. The
> >>> shell wrapper is called from the commitinfo file as follows:
>
> >>> ---
> >>> named.data/ZONES/* /usr/local/bin/checkzone %s
> >>> ---
>
> >>> And "%s" is supposed to be expanded to the name of the zone file when any
> >>> file under " named.data/ZONES/" is committed. The checkzone script is as
> >>> follows:
>
> >>> ---
> >>> #!/bin/sh -x
> >>> ZONE=`echo $1 | cut -d "." -f  2,3,4,5,6`
> >>> ZONE_FILE=DB.$ZONE
> >>> named-checkzone $ZONE $ZONE_FILE
> >>> ---
>
> >>> However, when I run the commit, the debug information shows the "%s"
> >>> variable is not being expanded to the name of the file, consequently the
> >>> shell script does not get the correct argument and the commit fails:
>
> >>> ---
> >>> [traianow@box ~/named.data/ZONES]$ cvs commit  DB.evasive.co.za
>
> >>> + cut -d . -f 2,3,4,5,6
> >>> + echo %s
> >>> + ZONE=%s
> >>> + ZONE_FILE=DB.%s
> >>> + named-checkzone %s DB.%s
>
> >>> zone %s/IN: loading from master file DB.%s failed: file not found
>
> >>> cvs commit: Pre-commit check failed
> >>> cvs [commit aborted]: correct above errors first!
>
> >>> ---
>
> >>> Please could someone help me shed some light on this for me? I suspect it's
> >>> somehow related to the environment the script is being run in, but the
> >>> details escape me, and why "%s" is not being expanded is also beyond me at
> >>> the moment :-P
>
> >>> Thanks in Advance,
> >>> Traiano Welcome
>

Try adding a simple debug line in commitinfo, something like:
ALL echo got pre-commit of files: %{s} >> /tmp/pre_commit_log.txt

See if the contents of /tmp/pre_commit_log.txt contain the correct
file name(s).

Yaron
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.