[cvsnt] Bug in loginfo handling

Thomas Keller me at thomaskeller.biz
Mon Oct 3 16:32:14 BST 2005


Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


Hello Group!

I've tried to setup a two-way email commit notification thing on Linux.
Every commit goes to one "general" email list, while commits on certain
files/directorys go to another "special" list. This is used to keep the
verbosity level for the special list low, since these users only get
commit notifications on those directorys they're actually working on.

Now, I noticed some strange behaviour in CVSNT 2.5.01-1976:

a) Several ALL occurences are not treated, only the last one, obviously
the docs state that this works[0]. The fix Glen stated back in July to
put a "+" sign in front of the ALL ("+ALL /path/to/cmd") made CVSNT not
even executing the last command.
b) It seems as the second (and maybe further?) entries do not get equal
parameters passed. A little example:

I use this perl script to print out STDIN and ARGV passed to it:

#!/usr/bin/perl -w
use strict;

my @stdin = <STDIN>;
print ">>>> STDIN:\n";
print join("\n", at stdin);

print ">>>> CMDLINE:\n";
foreach (@ARGV) {
    print "$_\n";
}

My loginfo file now looks like the following:

^misc/foo /var/cvsroot/CVSROOT/test.pl $USER "%s"
ALL       /var/cvsroot/CVSROOT/test.pl $USER "%s"

Ideally, both scripts should receive the same input. But that is what
happens if I do a commit:

tommyd at host [~/misc/foo]$ cvs commit -m ""
cvs commit: Examining .
Checking in bar;
/mmmdi/misc/foo/bar,v  <--  bar
new revision: 1.5; previous revision: 1.4
done
Checking in baz;
/mmmdi/misc/foo/baz,v  <--  baz
new revision: 1.5; previous revision: 1.4
done
Checking in foo;
/mmmdi/misc/foo/foo,v  <--  foo
new revision: 1.3; previous revision: 1.2
done
>>>> STDIN:
Update of /mmmdi/misc/foo

In directory host.musicmademe.com:/tmp/cvs-serv13792



Modified Files:

        bar baz foo

Log Message:


>>>> CMDLINE:
tommyd
misc/foo
bar
baz
foo
>>>> STDIN:
Update of /mmmdi/misc/foo

In directory host.musicmademe.com:/tmp/cvs-serv13792



Modified Files:

        bar baz foo

Log Message:


>>>> CMDLINE:
tommyd
bar
baz
foo


As you can see below inside the 2nd "CMDLINE" section there is no path
given to the script (right after the username). This makes my perl
script (which consists of commit_prep and log_accum) not working, which
tries to match the directory on which the commit happens with the
directory last recorded during commitinfo. Now again, my loginfo script
works, IF it gets the correct input which doesn't seem to be the case.

Any hints how to resolve this issue are greatly appreciated!

Thomas.

[0] http://www.cvsnt.org/manual/html/loginfo.html
-- 
Registered Linux User #369861
PGP Public Key on http://thomaskeller.biz/pgp/thomas-keller.pkr
Learn to quote http://netmeister.org/news/learn2quote.html


More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook