From CHAD.S.METCALF at saic.com Thu Dec 9 21:08:22 2004 From: CHAD.S.METCALF at saic.com (Metcalf, Chad S.) Date: Thu, 9 Dec 2004 13:08:22 -0800 Subject: [cvsspam-devel] CVSWeb not working in v0.2.10 (fix included) Message-ID: <08A89F1DEA45E44DA4DF4585C3E0FBA00F10779D@cp-its-exs04.mail.saic.com> This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------_=_NextPart_001_01C4DE33.374D78C8 Content-Type: text/plain I was getting the following error when using CVSWeb with a repository_name of GUESS. /cvs/CVSROOT/cvsspam.rb:1114: undefined method `repository_name=' for # (NameError) /cvs/CVSROOT/collect_diffs.rb:273:in `mailtest': problem running '/cvs/CVSROOT/cvsspam.rb' (RuntimeError) from /cvs/CVSROOT/collect_diffs.rb:259:in `choose_operation' from /cvs/CVSROOT/collect_diffs.rb:404 I looked into cvsspam.rb and saw that viewcvs declared an attr_accessor :repository_name And cvsweb didn't so I added one and it worked. Just FYI. Thanks Chad --- Chad Stephen Metcalf SAIC - System Engineer 4B Inverness Court East, Suite 210 Englewood, Colorado 80112 (O) 303.217.4430 (F) 303.217.4437 (C) 720.261.1795 Up, Down, Up, Down, Left, Right, Left, Right, B, A, Select, Start. ------_=_NextPart_001_01C4DE33.374D78C8 Content-Type: text/html Content-Transfer-Encoding: quoted-printable CVSWeb not working in v0.2.10 (fix included)

I was getting the following error when = using CVSWeb with a repository_name of GUESS.

/cvs/CVSROOT/cvsspam.rb:1114: = undefined method `repository_name=3D' for
#<CVSwebFrontend:0x402accdc> = (NameError)
/cvs/CVSROOT/collect_diffs.rb:273:in = `mailtest': problem running
'/cvs/CVSROOT/cvsspam.rb' = (RuntimeError)
        from = /cvs/CVSROOT/collect_diffs.rb:259:in `choose_operation'
         &nb= sp;      from = /cvs/CVSROOT/collect_diffs.rb:404

I looked into cvsspam.rb and saw that = viewcvs declared an
attr_accessor :repository_name

And cvsweb didn't so I added one and = it worked.

Just FYI.

Thanks
Chad
---
Chad Stephen Metcalf
SAIC - System Engineer
4B Inverness Court East, Suite = 210
Englewood, Colorado 80112
(O) 303.217.4430
(F) 303.217.4437
(C) 720.261.1795

Up, Down, Up, Down, Left, Right, Left, = Right, B, A, Select, Start.

------_=_NextPart_001_01C4DE33.374D78C8-- From dave at badgers-in-foil.co.uk Thu Dec 9 22:59:33 2004 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Thu, 9 Dec 2004 22:59:33 +0000 Subject: [cvsspam-devel] CVSWeb not working in v0.2.10 (fix included) In-Reply-To: <08A89F1DEA45E44DA4DF4585C3E0FBA00F10779D@cp-its-exs04.mail.saic.com> References: <08A89F1DEA45E44DA4DF4585C3E0FBA00F10779D@cp-its-exs04.mail.saic.com> Message-ID: <20041209225933.GA29969@vhost.badgers-in-foil.co.uk> On Thu, Dec 09, 2004 at 01:08:22PM -0800, Metcalf, Chad S. wrote: > I was getting the following error when using CVSWeb with a repository_name > of GUESS. > > /cvs/CVSROOT/cvsspam.rb:1114: undefined method `repository_name=' for > # (NameError) > /cvs/CVSROOT/collect_diffs.rb:273:in `mailtest': problem running > '/cvs/CVSROOT/cvsspam.rb' (RuntimeError) > from /cvs/CVSROOT/collect_diffs.rb:259:in `choose_operation' > from /cvs/CVSROOT/collect_diffs.rb:404 > > I looked into cvsspam.rb and saw that viewcvs declared an > attr_accessor :repository_name > > And cvsweb didn't so I added one and it worked. Thanks for pointing out the bug! I've lifted that attribute to the superclass, so all three subclasses can use it properly now. dave -- http://david.holroyd.me.uk/ From dave at badgers-in-foil.co.uk Fri Dec 10 00:15:42 2004 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Fri, 10 Dec 2004 00:15:42 +0000 Subject: [cvsspam-devel] [ANN] CVSspam 0.2.11 Released Message-ID: <20041210001542.GB29969@vhost.badgers-in-foil.co.uk> I've just uploaded CVSspam 0.2.11 to the project page, http://www.badgers-in-foil.co.uk/projects/cvsspam/ Changes in this release include: * Fixed a problem with a Mac CVS client committing to a Unix server, where the commit-log may be sent in 'Mac' format: This used to allow Mac-style end-of-line characters into the email subject, breaking from the allowed header syntax. Thanks to Sebastian Gonzalez for pointing this out. * Fixed the issue that a dot on a line on it's own, in a CVS log comment, would break the sending of emails. sendmail, et al, treat a dot, on a line on its own, as indication of the end of the message body, unless the -oi switch is given. Thanks to Adam Malik for spotting this one. * Made the $no_removed_file_diff option work. Thanks to Sven Koehler for pointing out that it didn't. * Implemented a $no_added_file_diff option to suppress inclusion of diffs containing the contents of added files, and a $no_diff option, for supression diffs entirely (the top-of-mail index, and the user's log comments remain). As requested by several people. * Tried to fix the problem, reported by Sven Koehler, where an extra trailing slash in the CVSROOT path broke the tag in the email subject, giving text like '#', rather than the name of the top-level CVS project directory. Fix unconfirmed. * Altered some of the HTML-generating code making it less likely to produce super-long lines in the email. Mailservers may forcibly reformat lines which exceed the limits defined for SMTP. * Refactoring to try and get all the code generating the HTML for a file's diff into one place, rather than spread though unrelated classes. * Fixed an instance where an ampersand was allowed into the HTML without being encoded as an '&'. * Fix missing repository_name attribute when using CVSweb code, as reported by Chad S. Metcalf dave -- http://david.holroyd.me.uk/ From skoehler at upb.de Fri Dec 10 01:16:39 2004 From: skoehler at upb.de (Sven =?ISO-8859-1?Q?K=F6hler?=) Date: Fri, 10 Dec 2004 02:16:39 +0100 Subject: [cvsspam-devel] [BUG] bad subject In-Reply-To: <20041023153740.GA377@vhost.badgers-in-foil.co.uk> References: <41532406.30804@upb.de> <4154C561.6040002@upb.de> <20040925093947.GA20995@vhost.badgers-in-foil.co.uk> <41555E88.5070806@upb.de> <20041023153740.GA377@vhost.badgers-in-foil.co.uk> Message-ID: <1102641399.6729.3.camel@localhost> > I think the original patch is probably close to the proper fix, but > it just needs an extra nudge to address the above error. So here it is > again, with the addition of a line that should strip the slash in > '/test ...' that the exception above complains about. With cvsspam 0.2.11 i now get this error, when there is a trailing slash in the cvsroot: /opt/cvsspam/collect_diffs.rb:103:in `sub!': can't modify frozen string (TypeError) from /opt/cvsspam/collect_diffs.rb:103:in `collect_antique_style_args' from /opt/cvsspam/collect_diffs.rb:165:in `process_log' from /opt/cvsspam/collect_diffs.rb:431 BTW: sorry that i didn't answer that long, i was _very_ busy, and just didn't have the time to test anything. From dave at badgers-in-foil.co.uk Sat Dec 11 15:30:45 2004 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Sat, 11 Dec 2004 15:30:45 +0000 Subject: [cvsspam-devel] [BUG] bad subject In-Reply-To: <1102641399.6729.3.camel@localhost> References: <41532406.30804@upb.de> <4154C561.6040002@upb.de> <20040925093947.GA20995@vhost.badgers-in-foil.co.uk> <41555E88.5070806@upb.de> <20041023153740.GA377@vhost.badgers-in-foil.co.uk> <1102641399.6729.3.camel@localhost> Message-ID: <20041211153044.GA31378@vhost.badgers-in-foil.co.uk> On Fri, Dec 10, 2004 at 02:16:39AM +0100, Sven K?hler wrote: > With cvsspam 0.2.11 i now get this error, when there is a trailing slash > in the cvsroot: > > /opt/cvsspam/collect_diffs.rb:103:in `sub!': can't modify frozen string > (TypeError) > from /opt/cvsspam/collect_diffs.rb:103:in > `collect_antique_style_args' > from /opt/cvsspam/collect_diffs.rb:165:in `process_log' > from /opt/cvsspam/collect_diffs.rb:431 Try changing line 103 of collect_diffs.rb from, cvs_info.sub!(/^\/+/, "") to, cvs_info = cvs_info.sub(/^\/+/, "") (I don't have a machine to hand using both an 'old' CVS together with a 'new' Ruby to test this code-path.) > BTW: sorry that i didn't answer that long, i was _very_ busy, and just > didn't have the time to test anything. No problem! I've been busy too -- the last release should have come out weeks ago, TBH. thanks! dave -- http://david.holroyd.me.uk/ From skoehler at upb.de Sat Dec 11 20:50:22 2004 From: skoehler at upb.de (=?ISO-8859-1?Q?Sven_K=F6hler?=) Date: Sat, 11 Dec 2004 21:50:22 +0100 Subject: [cvsspam-devel] [BUG] bad subject In-Reply-To: <20041211153044.GA31378@vhost.badgers-in-foil.co.uk> References: <41532406.30804@upb.de> <4154C561.6040002@upb.de> <20040925093947.GA20995@vhost.badgers-in-foil.co.uk> <41555E88.5070806@upb.de> <20041023153740.GA377@vhost.badgers-in-foil.co.uk> <1102641399.6729.3.camel@localhost> <20041211153044.GA31378@vhost.badgers-in-foil.co.uk> Message-ID: <41BB5D8E.4040007@upb.de> > Try changing line 103 of collect_diffs.rb from, > > cvs_info.sub!(/^\/+/, "") > > to, > > cvs_info = cvs_info.sub(/^\/+/, "") > > (I don't have a machine to hand using both an 'old' CVS together with a > 'new' Ruby to test this code-path.) Yes, that worked! Thx for the whole fix with the trailing slashes, it's now confirmed. From it at becker-clan.net Mon Dec 20 18:20:05 2004 From: it at becker-clan.net (dale becker) Date: Mon, 20 Dec 2004 18:20:05 +0000 Subject: [cvsspam-devel] CVSSpam errors on commit Message-ID: <1103566805.41c717d556988@netmail.pipex.net> I have installed CVSSpam as per the installation instructions and cannot seem to get it to work properly. When I commit a file the CVSSpam scripts are called - where it fails is in the call to record_lastdir.rb at line 48: File.open("CVS/Entries") do |file| >From my understanding of how CVSSpam works is that the entries in the commit are somehow recorded in a temp folder in /tmp called something like #cvsspam.8014.501-53345659 When line 48 above is called it fails with the following error - cvs commit: cannot exec /usr/local/cvsroot/CVSROOT/record_lastdir.rb: No such file or directory cvs commit: Pre-commit check failed cvs [commit aborted]: correct above errors first! So I reckon it is something to do with the reading of these entries as the CVS/Entries folder does not exist in /tmp/#cvsspam.8014.501-53345659 - what this could be I do not know. I must mention that there is a file in that folder called lastdir and it contains: /usr/local/cvsroot/projectname/src/com/mycompany/core -- Dale Becker From luke at smgf.org Tue Dec 21 08:22:18 2004 From: luke at smgf.org (Luke Hutchison) Date: Tue, 21 Dec 2004 01:22:18 -0700 Subject: [cvsspam-devel] Missing info in cvsspam documentation In-Reply-To: <20041014173026.GC14104@vhost.badgers-in-foil.co.uk> References: <1097694235.14582.196.camel@smgf-wks12> <20041014092122.GB11138@vhost.badgers-in-foil.co.uk> <1097773682.14582.224.camel@smgf-wks12> <20041014173026.GC14104@vhost.badgers-in-foil.co.uk> Message-ID: <1103617338.2126.83.camel@smgf-wks12.sdihq.com> I just installed cvsspam, and had a few problems that took a while to fix due to gaps in the documentation: (1) When checking the .rb files into CVSROOT, I couldn't find a way to set the executable bit. Consequently, the files could not be run by invoking them using their absolute path, and the example configuration files in the documentation don't work. I eventually found that I could set the bit using "chmod a+x file.rb" and "chmod a+x file.rb,v" in the repository itself, however there has to be a better way, and it would be nice if the cvsspam docs explain how to commit these as executable files, so that they are executable across multiple checkout/modify/checkin cycles. I also found that Eclipse 3.1M4 can set this bit. However I couldn't find how to set it (or preserve it on commit) using "man cvs". (2) cvsspam.conf was only created as "cvsspam.conf,v" in the repository -- there was no "cvsspam.conf". I don't know what the criteria are for CVS to utilize an RCSFILE only (as opposed to the current version of the file itself along with an RCSFILE). I checked in cvsspam.conf after the initial cvs import, if that makes a difference. Consequently, config changes were not being read from cvsspam.conf, because it only existed in checked-out versions of the repository. I manually copied the most recent cvsspam.conf into $CVSROOT/CVSROOT in the end, to get it working. Hopefully this hasn't broken the repository in any way! I couldn't find info in either cvsspam docs or cvs docs explaining how to fix this. (3) I thought change highlighting was broken, but it turns out that Evolution (GtkHTML3) doesn't render CSS. Also, Gmail filters CSS out of before displaying HTML mail. It would be nice to have a mention somewhere in the docs that CSS is required for highlighting to work. Also, it might be good to use non-CSS HTML for markup, because it appears not every email system can display it. Other than that, cvsspam is great -- Thanks! Luke Hutchison From luke at smgf.org Tue Dec 21 08:27:59 2004 From: luke at smgf.org (Luke Hutchison) Date: Tue, 21 Dec 2004 01:27:59 -0700 Subject: [cvsspam-devel] CVSSpam errors on commit In-Reply-To: <1103566805.41c717d556988@netmail.pipex.net> References: <1103566805.41c717d556988@netmail.pipex.net> Message-ID: <1103617680.2126.86.camel@smgf-wks12.sdihq.com> Dale -- it looks like the problem you are having is related to the one I was having with the executable bit not being set on /usr/local/cvsroot/CVSROOT/record_lastdir.rb . Try the following: chmod a+x /usr/local/cvsroot/CVSROOT/*.rb chmod a+x /usr/local/cvsroot/CVSROOT/*.rb,v It's a hack, but it fixed it for me. Luke On Mon, 2004-12-20 at 18:20 +0000, dale becker wrote: > I have installed CVSSpam as per the installation instructions and cannot seem to > get it to work properly. > > When I commit a file the CVSSpam scripts are called - where it fails is in the > call to record_lastdir.rb at line 48: > > File.open("CVS/Entries") do |file| > > From my understanding of how CVSSpam works is that the entries in the commit are > somehow recorded in a temp folder in /tmp called something like > #cvsspam.8014.501-53345659 > > When line 48 above is called it fails with the following error - > > cvs commit: cannot exec /usr/local/cvsroot/CVSROOT/record_lastdir.rb: No such > file or directory > cvs commit: Pre-commit check failed > cvs [commit aborted]: correct above errors first! > > So I reckon it is something to do with the reading of these entries as the > CVS/Entries folder does not exist in /tmp/#cvsspam.8014.501-53345659 - what this > could be I do not know. > > I must mention that there is a file in that folder called lastdir and it contains: > > /usr/local/cvsroot/projectname/src/com/mycompany/core > > -- > Dale Becker > > _______________________________________________ > cvsspam-devel mailing list > cvsspam-devel@lists.badgers-in-foil.co.uk > http://lists.badgers-in-foil.co.uk/mailman/listinfo/cvsspam-devel -- Luke Hutchison From tonyg at lshift.net Tue Dec 21 13:38:27 2004 From: tonyg at lshift.net (Tony Garnock-Jones) Date: Tue, 21 Dec 2004 13:38:27 +0000 Subject: [cvsspam-devel] Missing info in cvsspam documentation In-Reply-To: <1103617338.2126.83.camel@smgf-wks12.sdihq.com> References: <1097694235.14582.196.camel@smgf-wks12> <20041014092122.GB11138@vhost.badgers-in-foil.co.uk> <1097773682.14582.224.camel@smgf-wks12> <20041014173026.GC14104@vhost.badgers-in-foil.co.uk> <1103617338.2126.83.camel@smgf-wks12.sdihq.com> Message-ID: <41C82753.8050804@lshift.net> Luke Hutchison wrote: > (1) [file mode bits don't stick] Yep, that's one of the weaknesses of CVS. It won't track permissions, it won't version permissions, it won't version directories etc etc. > (2) cvsspam.conf was only created as "cvsspam.conf,v" in the repository Right, there's a feature of CVS that's specifically designed for this situation. See the entry for the administrative file "checkoutlist" (section C.7) in the CVS manual. Basically, you would list cvsspam.conf as an entry in checkoutlist, and CVS will automagically maintain a working copy in the repository for you. BTW, Hi Luke ;) Tony -- [][][] Tony Garnock-Jones | Mob: +44 (0)7905 974 211 [][] LShift Ltd | Tel: +44 (0)20 7729 7060 [] [] www.lshift.net | Email: tonyg@lshift.net From dave at badgers-in-foil.co.uk Wed Dec 22 13:41:01 2004 From: dave at badgers-in-foil.co.uk (David Holroyd) Date: Wed, 22 Dec 2004 13:41:01 +0000 Subject: [cvsspam-devel] Missing info in cvsspam documentation In-Reply-To: <1103617338.2126.83.camel@smgf-wks12.sdihq.com> References: <1097694235.14582.196.camel@smgf-wks12> <20041014092122.GB11138@vhost.badgers-in-foil.co.uk> <1097773682.14582.224.camel@smgf-wks12> <20041014173026.GC14104@vhost.badgers-in-foil.co.uk> <1103617338.2126.83.camel@smgf-wks12.sdihq.com> Message-ID: <20041222134101.GA21925@vhost.badgers-in-foil.co.uk> On Tue, Dec 21, 2004 at 01:22:18AM -0700, Luke Hutchison wrote: > (1) When checking the .rb files into CVSROOT, I couldn't find a way to > set the executable bit. Consequently, the files could not be run by > invoking them using their absolute path, and the example configuration > files in the documentation don't work. I eventually found that I could > set the bit using "chmod a+x file.rb" and "chmod a+x file.rb,v" in the > repository itself, however there has to be a better way, and it would be > nice if the cvsspam docs explain how to commit these as executable > files, so that they are executable across multiple > checkout/modify/checkin cycles. I also found that Eclipse 3.1M4 can set > this bit. However I couldn't find how to set it (or preserve it on > commit) using "man cvs". To be honest, this has always 'just worked' for me -- probably because the files I initially check in to CVS already have the correct permissions. I will have to investigate what mechanism Eclipse uses to this, since I didn't think changing permissions was possible. (Is yours a local repository?). > (2) cvsspam.conf was only created as "cvsspam.conf,v" in the repository > -- there was no "cvsspam.conf". Ditto Tony's suggestion. > (3) I thought change highlighting was broken, but it turns out that > Evolution (GtkHTML3) doesn't render CSS. Also, Gmail filters CSS out of > before displaying HTML mail. It would be nice to have a mention > somewhere in the docs that CSS is required for highlighting to work. > Also, it might be good to use non-CSS HTML for markup, because it > appears not every email system can display it. I made a choice not to use old-school markup, knowing that this means some styling will not appear in some mail user agents. I *have* gone to some efforts to produce HTML that degrades gracefully though (tell me if this is not the case). HTML-rendering capabilities of modern mail clients vary a lot more than, for example, the capabilities of modern browsers, so I've let go of any hopes for uniformity. Presentation in user agents without CSS was at least accaptable, if not colourful, last time I checked. The only part of markup that I'd really like to change is the individual
 elements for each fragment of coloured diff-output.  These cause
gaps to appear in some user agents when the message is displayed, and in
many more when the message is converted to plain-text for reply.  I've
tried to fix that in the past, but it's the HTML-equivalent of a
whack-a-rat game, with new problems popping up in other places.


dave

-- 
http://david.holroyd.me.uk/


From dave at badgers-in-foil.co.uk  Wed Dec 22 14:10:39 2004
From: dave at badgers-in-foil.co.uk (David Holroyd)
Date: Wed, 22 Dec 2004 14:10:39 +0000
Subject: [cvsspam-devel] CVSSpam errors on commit
In-Reply-To: <1103566805.41c717d556988@netmail.pipex.net>
References: <1103566805.41c717d556988@netmail.pipex.net>
Message-ID: <20041222141038.GB21925@vhost.badgers-in-foil.co.uk>

On Mon, Dec 20, 2004 at 06:20:05PM +0000, dale becker wrote:
> When I commit a file the CVSSpam scripts are called - where it fails
> is in the call to record_lastdir.rb at line 48:
> 
> File.open("CVS/Entries") do |file|
> 
> From my understanding of how CVSSpam works is that the entries in the
> commit are somehow recorded in a temp folder in /tmp called something
> like #cvsspam.8014.501-53345659
> 
> When line 48 above is called it fails with the following error -

Why do you mention line 48 (of record_lastdir.rb)?  It isn't given in
the error massage you supplied...

> cvs commit: cannot exec /usr/local/cvsroot/CVSROOT/record_lastdir.rb: No such
> file or directory
> cvs commit: Pre-commit check failed
> cvs [commit aborted]: correct above errors first!
[...]
> I must mention that there is a file in [the tmp/#cvsspam..] folder
> called lastdir and it contains:
> 
> /usr/local/cvsroot/projectname/src/com/mycompany/core

This confuses me -- it claims not to be able to invoke the commitinfo
hook-script, and yet you mention that the 'lastdir' tmp file exists, and
this gets created by the script that apparently can't be found.

Are there any other error messages that you haven't mentioned?


> So I reckon it is something to do with the reading of these entries as the
> CVS/Entries folder does not exist in /tmp/#cvsspam.8014.501-53345659 -
> what this could be I do not know.

The CVS/Entries file the script inspects is a temporary file created
(elsewhere in the filesystem) by CVS while the commit is taking place.
CVSspam doesn't look for that file in its own tmp dir; don't worry about
it not existing at that location.


So, to investigate the error message you gave:

 1. Verify the script exists and is executable at the reported path with
    'ls -l /usr/local/cvsroot/CVSROOT/record_lastdir.rb', and possibly
    fix per Luke's suggestion.

 2. Check that the 'pling line' has the correct ruby path for your
    system.  The default is '#!/usr/bin/ruby -w' -- does this agree with
    'which ruby'?

 3. If you've edited the pling line, ensure that your editor hasn't
    converted the file to 'DOS' format, such that the system attempts to
    exec a non-existant file called 'ruby^M' (i.e. with a carriage-
    return appended to the filename).


Let us know how you get on!

dave

-- 
http://david.holroyd.me.uk/


From luke at smgf.org  Wed Dec 22 19:29:28 2004
From: luke at smgf.org (Luke Hutchison)
Date: Wed, 22 Dec 2004 12:29:28 -0700
Subject: [cvsspam-devel] Missing info in cvsspam documentation
In-Reply-To: <20041222134101.GA21925@vhost.badgers-in-foil.co.uk>
References: <1097694235.14582.196.camel@smgf-wks12> <20041014092122.GB11138@vhost.badgers-in-foil.co.uk> <1097773682.14582.224.camel@smgf-wks12> <20041014173026.GC14104@vhost.badgers-in-foil.co.uk> <1103617338.2126.83.camel@smgf-wks12.sdihq.com> <20041222134101.GA21925@vhost.badgers-in-foil.co.uk>
Message-ID: <1103743769.15312.34.camel@smgf-wks12.sdihq.com>

Hi David,

On Wed, 2004-12-22 at 13:41 +0000, David Holroyd wrote:
> On Tue, Dec 21, 2004 at 01:22:18AM -0700, Luke Hutchison wrote:
> > (1) When checking the .rb files into CVSROOT, I couldn't find a way to
> > set the executable bit.  Consequently, the files could not be run by
>
> To be honest, this has always 'just worked' for me -- probably because
> the files I initially check in to CVS already have the correct
> permissions.  I will have to investigate what mechanism Eclipse uses to
> this, since I didn't think changing permissions was possible.  (Is yours
> a local repository?).

No, this is a remote repository.  I originally checked the files in
using Eclipse 3.0, which did not support setting/preserving permissions.
I guess the commandline cvs client would have preserved the permissions?

The main problem I was having was that I have little background in CVS
internals, and there was nothing in the cvsspam installation docs to
help diagnose or troubleshoot the problem -- I fixed it, but you
mentioned a month or so ago on the list that you're always looking to
improve the documentation.

> 
> > (2) cvsspam.conf was only created as "cvsspam.conf,v" in the repository
> > -- there was no "cvsspam.conf".
> 
> Ditto Tony's suggestion.

This would also be good to have in the documentation -- the current
install docs only say to add record_lastdir.rb, collect_diffs.rb and
cvsspam.rb to checkoutlist, not cvsspam.conf.  It would be nice if there
were also an explanation of why these filenames are being added to that
file.  Figuring this out is probably trivial for people with lots of CVS
admin experience, but it's not trivial without.

> I made a choice not to use old-school markup, knowing that this means
> some styling will not appear in some mail user agents.  I *have* gone to
> some efforts to produce HTML that degrades gracefully though (tell me if
> this is not the case).

The HTML looks fine in both Evolution and Gmail, it's just not coloured.
I wonder if there's a way to fall back to italic/bold instead of
colouring in a non-CSS environment?  e.g. deleted lines get shown in
italics, inserted lines show up non-italicized.  It probably wouldn't
hurt to have this be the case when CSS markup actually works, too.

I really like CVSspam, it does a great job -- thanks.

Luke




From daleb at becker-clan.net  Fri Dec 24 15:16:44 2004
From: daleb at becker-clan.net (Dale Becker)
Date: Fri, 24 Dec 2004 15:16:44 +0000
Subject: [cvsspam-devel] CVSSpam errors on commit
In-Reply-To: <1103617680.2126.86.camel@smgf-wks12.sdihq.com>
References: <1103566805.41c717d556988@netmail.pipex.net>
 <1103617680.2126.86.camel@smgf-wks12.sdihq.com>
Message-ID: <671c8a0104122407165ca9f306@mail.gmail.com>

------=_Part_367_17284291.1103901404746
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Luke,

Thanks for the advice but it did not help. Attached is my file listing
showing the permissioning.

Where next?

/Dale/

On Tue, 21 Dec 2004 01:27:59 -0700, Luke Hutchison  wrote:
> Dale -- it looks like the problem you are having is related to the one I
> was having with the executable bit not being set
> on  /usr/local/cvsroot/CVSROOT/record_lastdir.rb .  Try the following:
> 
> chmod a+x /usr/local/cvsroot/CVSROOT/*.rb
> chmod a+x /usr/local/cvsroot/CVSROOT/*.rb,v
> 
> It's a hack, but it fixed it for me.
> 
> Luke
> 
> On Mon, 2004-12-20 at 18:20 +0000, dale becker wrote:
> > I have installed CVSSpam as per the installation instructions and cannot seem to
> > get it to work properly.
> >
> > When I commit a file the CVSSpam scripts are called - where it fails is in the
> > call to record_lastdir.rb at line 48:
> >
> > File.open("CVS/Entries") do |file|
> >
> > From my understanding of how CVSSpam works is that the entries in the commit are
> > somehow recorded in a temp folder in /tmp called something like
> > #cvsspam.8014.501-53345659
> >
> > When line 48 above is called it fails with the following error -
> >
> > cvs commit: cannot exec /usr/local/cvsroot/CVSROOT/record_lastdir.rb: No such
> > file or directory
> > cvs commit: Pre-commit check failed
> > cvs [commit aborted]: correct above errors first!
> >
> > So I reckon it is something to do with the reading of these entries as the
> > CVS/Entries folder does not exist in /tmp/#cvsspam.8014.501-53345659 - what this
> > could be I do not know.
> >
> > I must mention that there is a file in that folder called lastdir and it contains:
> >
> > /usr/local/cvsroot/projectname/src/com/mycompany/core
> >
> > --
> > Dale Becker
> >
> > _______________________________________________
> > cvsspam-devel mailing list
> > cvsspam-devel@lists.badgers-in-foil.co.uk
> > http://lists.badgers-in-foil.co.uk/mailman/listinfo/cvsspam-devel
> --
> Luke Hutchison 
>

------=_Part_367_17284291.1103901404746
Content-Type: image/jpeg; name="files.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="files.jpg"

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
E1FYYTCajGjRo1q3/9k=
------=_Part_367_17284291.1103901404746--


From tonyg at lshift.net  Sat Dec 25 20:56:24 2004
From: tonyg at lshift.net (Tony Garnock-Jones)
Date: Sat, 25 Dec 2004 20:56:24 +0000
Subject: [cvsspam-devel] CVSSpam errors on commit
In-Reply-To: <671c8a0104122407165ca9f306@mail.gmail.com>
References: <1103566805.41c717d556988@netmail.pipex.net>	 <1103617680.2126.86.camel@smgf-wks12.sdihq.com> <671c8a0104122407165ca9f306@mail.gmail.com>
Message-ID: <41CDD3F8.2050204@lshift.net>

Dale Becker wrote:
>>>cvs commit: cannot exec /usr/local/cvsroot/CVSROOT/record_lastdir.rb: No such
>>>file or directory
>>>cvs commit: Pre-commit check failed
>>>cvs [commit aborted]: correct above errors first!

The other possibility here is that the Ruby interpreter can't be found, 
somehow. Either the path is wrong, one of the interpreter's dependent 
shared libraries is missing or broken, or the interpreter isn't installed.

Tony