Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: ChangeLog formatting?
- X-seq: zsh-workers 16128
- From: Wayne Davison <wayned@xxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: ChangeLog formatting?
- Date: Tue, 23 Oct 2001 16:37:10 -0700 (PDT)
- In-reply-to: <20011023210549.B15689@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
On Tue, 23 Oct 2001, Adam Spiers wrote:
> Would be nice to have a convention for cvs commit log messages too.
In what way were you thinking? I'd be cautious of too much
conformance, but some basic guidelines could be useful.
I personally prefer to customize each file's log message to directly
reflect that's file's changes, and I think most of the log messages
I've seen for zsh are the same way. I created a perl script to make
this easier for me. If any of you are like-minded on this, you may
find the following steps useful.
1. I first diff the changes to create a patch file.
2. I run "egrep '^Index: ' diff.file" >>cvs.put" to get the names of
all the changed files.
3. I then edit the cvs.put file to add a paragraph (or whatever)
after each Index: line that describes the changes to that file.
4. I run the attached perl script (which I also named cvs.put), which
reads the local cvs.put file and commits all the changes with the
associated log messages. The script also appends the committed
descriptions in a more ChangeLog-like style onto a file named "CL".
5. I insert the CL file at the start of the ChangeLog file, edit the
entry for brevity and proper format, and commit it.
6. I move CL to CL.old.
My script also allows you to comment out an Index: line with "#" to
avoid committing a file and it allows you to use the same comment for
multiple files by putting only one comment section after multiple
Index lines. For instance:
-----
Index: Src/hist.c
Index: Src/builtins.c
Fixed a typo. (This comment will be used on both of the above files.)
#Index: Src/subst.c
Silenced a compiler warning. (This file will not be committed until
the above Index line is uncommented.)
Index: Src/Zle/zle_main.c
Frobbed the flebblesnorf.
-----
I hope someone finds this useful. Be sure to edit in your username
and email address in place of mine in the following script.
..wayne..
---8<------8<------8<------8<---cut here--->8------>8------>8------>8---
#!/usr/bin/perl
$msg = '';
$defer = 0;
@files = ( );
@deferred = ( );
open(IN, 'cvs.put') or die "Unable to read cvs.put\n";
-s IN or die "cvs.put is empty\n";
open(OUT, '>cvs.put.new') or die "Unable to write cvs.put.out\n";
open(CL, '>>CL') or die "Unable to append to CL\n";
chomp($now = `date +%Y-%m-%d`);
print CL $now, " Wayne Davison <wayned\@users.sourceforge.net>\n\n";
while (<IN>) {
if (/^(#*)Index:\s*(\S+)/) {
&commit;
push(@files, $2);
$defer = 1 if $1 ne '';
}
else {
die "Malformed cvs.put file -- line w/o Index line:\n$_" unless @files;
$msg .= $_;
}
}
&commit;
close(OUT);
close(IN);
rename('cvs.put', 'cvs.put.old');
rename('cvs.put.new', 'cvs.put');
print "\nDeferred puts for: @deferred\n" if @deferred;
exit;
sub commit
{
return if $msg eq ''; # Multiple adjacent Index lines use the same msg
if ($defer) {
$defer = 0;
push(@deferred, @files);
print OUT '#Index: ', join("\n#Index: ", @files), "\n", $msg;
undef @files;
$msg = '';
return;
}
$msg =~ s/^\n+//;
$msg =~ s/\s+$//;
if ($msg eq '') {
print "ERROR: Incomplete message for: @files\n";
push(@deferred, @files);
print OUT 'Index: ', join("\nIndex: ", @files), "\n\n\n\n";
undef @files;
$msg = '';
return;
}
open(MSG, '>cvs.msg') or die "Unable to write cvs.msg\n";
print MSG $msg, "\n";
close(MSG);
$msg =~ s/^/\t/mg;
print CL "\t* ", join(', ', @files), ":\n", $msg, "\n\n";
system "cvs commit -F cvs.msg @files";
unlink('cvs.msg');
undef @files;
$msg = '';
}
---8<------8<------8<------8<---cut here--->8------>8------>8------>8---
Messages sorted by:
Reverse Date,
Date,
Thread,
Author