From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-workers@sunsite.dk
Subject: Re: differences between the two branches
Date: Sat, 13 Oct 2001 07:39:37 +0000 [thread overview]
Message-ID: <1011013073937.ZM368@candle.brasslantern.com> (raw)
In-Reply-To: <1011012144532.ZM20507@candle.brasslantern.com>
[-- Attachment #1: Type: text/plain, Size: 2579 bytes --]
On Oct 12, 2:45pm, Bart Schaefer wrote:
}
} } Anyway to make this task easier, I passed both ChangeLogs through a bit
} } of sed to extract just the entries, wrapped onto one line each.
}
} Hmm, a bit of perl could probably help here. It should be possible to
} gobble up the entries to sort them by article number without actually
} unfolding them. I might fiddle with that later.
Attached are the script and the output. (Thanks go to S. Spencer Sun,
who happens both to work at Zanshin with me and to be an old Princeton
crony of PF's, for the basic algorithm that I hacked to produce this
script.)
What this does is parse change-long entries, pick out the article numbers
(for very loose definitions of "article" and "number"), and stash each
entry in a hash keyed on that article number. If it can't parse one, it
lumps all such entries under "unattributed". Every entry so hashed gets
its own "date name email" line (provided one could be parsed, so this
doesn't work very well on ChangeLog.3.0 as yet, though ChangeLog-3.1 is
mostly acceptable).
If there are multiple article numbers between the `*' and the `:' in the
same entry, they all get sucked up into one big key. The regex to do this
took up about 80% of the time I expended on the script. (I shouldn't have
bothered about being able to parse ChangeLog-3.1, but I did.)
The script then sorts the hash keys in reverse order (which means that
workers/*, users/*, unattributed, etc., come before article numbers, so
it's not perfect) and walks both hashes, comparing the keys. If it
finds a key in one hash but not the other, it prints an "only in XXX"
line. Otherwise it runs diff on the actual entries and prints out any
lines it gets back.
So the result is, in roughly descending-article-number order, a list of
all the articles that appear in only one file, plus the diffs of any
log entries where the same article was logged differently to each.
You run it as
difflog.pl [diff-options] older-file newer-file
E.g. I ran
difflog.pl -u1 branch/ChangeLog current/ChangeLog
The option `-bw' is always added to the diff-options, see `@differ'.
You can probably think of ways to make the output more useful, e.g. by
dumping the actual log entries that appear only in the newer file so
you don't have to go hunting for them. Left as an excercise; I'm very
sleepy now.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
[-- Attachment #2: difflog.pl --]
[-- Type: text/plain , Size: 2553 bytes --]
#!/usr/bin/perl
use IO::File;
my @differ = qw(diff -bw);
my $oldtmp = "/tmp/difflog$$.old";
my $newtmp = "/tmp/difflog$$.new";
my $newfn = pop(@ARGV);
my $oldfn = pop(@ARGV);
my (%oldhash, %newhash);
read_file($newfn, \%newhash);
read_file($oldfn, \%oldhash);
my @oldentries = reverse sort keys %oldhash;
my @newentries = reverse sort keys %newhash;
my $old = 0;
my $new = 0;
while ($old < @oldentries && $new < @newentries)
{
my $cmp = $oldentries[$old] cmp $newentries[$new];
if ($cmp > 0)
{
printf("only in %s: %s\n\n", $oldfn, $oldentries[$old++]);
}
elsif ($cmp < 0)
{
printf("only in %s: %s\n\n", $newfn, $newentries[$new++]);
}
else
{
if ($oldhash{$oldentries[$old]} ne $newhash{$newentries[$new]}) {
my $oldfh = new IO::File("/tmp/difflog$$.old", 'w');
$oldfh->print($oldhash{$oldentries[$old]});
$oldfh->close();
my $newfh = new IO::File("/tmp/difflog$$.new", 'w');
$newfh->print($newhash{$newentries[$new]});
$newfh->close();
open(DIFF, join(' ', @differ, @ARGV, $oldtmp, $newtmp, '|'));
my @lines = <DIFF>;
close(DIFF);
unlink </tmp/difflog$$.*>;
if (@lines)
{
print "diff for ", $oldentries[$old], ":\n";
map {
s/$oldtmp/$oldfn/;
s/$newtmp/$newfn/;
} @lines;
print @lines, "\n";
}
}
++$old;
++$new;
}
}
while ($old < @oldentries)
{
printf("only in %s: %s\n", $oldfn, $oldentries[$old++]);
}
while ($new < @newentries)
{
printf("only in %s: %s\n", $newfn, $newentries[$new++]);
}
sub read_file
{
my $fn = shift;
my $hashref = shift;
my $fh = new IO::File($fn, 'r');
my ($tag, $date, $entry, $block);
my $attrib = q[(:?(:?workers?|users?)/)?\d+];
$attrib = q[(?:\w+\s+)*] . $attrib;
$attrib = q[(?:[^/]*\D:\s*)?] . $attrib;
$attrib = qq[(?:unposted|$attrib)];
$attrib = qq[(?:(?:$attrib,)*\s*$attrib)];
$hashref->{unattributed} = $block = '';
while (my $line = $fh->getline())
{
if ($line =~ /(\d{4}-\d\d-\d\d)\s+.+\s+<.+\@.+>/i) {
$date = $1;
$block =~ s/\n*\Z/\n/;
if ($entry) {
$hashref->{$entry} .= "$tag\n$block";
} elsif ($tag) {
$hashref->{unattributed} .= "\n$tag$block";
}
$entry = $block = '';
$tag = $line;
} elsif ($line =~ /\* ((?:$attrib)[^:]*):/) {
my $next = $1;
if ($entry) {
$block =~ s/\n*\Z/\n/;
$hashref->{$entry} .= "$tag\n$block";
}
$entry = $next;
$hashref->{$next} = '';
$block = $line;
} else {
$block .= $line;
}
}
$fh->close();
}
[-- Attachment #3: Text --]
[-- Type: text/plain , Size: 11532 bytes --]
only in current/ChangeLog: users/4157 (plus workers/15674)
diff for users/4092:
--- branch/ChangeLog Fri Oct 12 23:45:56 2001
+++ current/ChangeLog Fri Oct 12 23:45:56 2001
@@ -1,4 +1,4 @@
-2001-08-17 Wayne Davison <wayned@users.sourceforge.net>
+2001-08-07 Wayne Davison <wayned@users.sourceforge.net>
- * users/4092: Src/hist.c: Don't drop the last line of the history
- file when handling a signal.
+ * users/4092: Src/hist.c: Don't lose the last history line
+ when a signal causes us to rewrite the history file.
only in current/ChangeLog: unposted; based on 14679 (me) and 14693 (Bart)
diff for unposted:
--- branch/ChangeLog Fri Oct 12 23:45:56 2001
+++ current/ChangeLog Fri Oct 12 23:45:56 2001
@@ -1,5 +1,3 @@
-2001-06-13 Peter Stephenson <pws@csr.com>
+2001-06-06 Andrej Borsenkow <bor@zsh.org>
- * unposted: Completion/compinstall: spotted by Bart: assignments
- when finding $fpath if not set in current shell were completely
- garbled.
+ * unposted: Etc/zsh-development-guide: we now support autoconf-2.50
diff for unattributed:
--- branch/ChangeLog Fri Oct 12 23:45:56 2001
+++ current/ChangeLog Fri Oct 12 23:45:56 2001
@@ -0,0 +1,8 @@
+
+2001-09-21 Andrew Main (Zefram) <zefram@zsh.org>
+
+ * Doc/Zsh/contrib.yo, Functions/Misc/tetris: Tetris game for ZLE.
+
+2001-06-04 Peter Stephenson <pws@csr.com>
+
+ * Relabelled this version 4.1.0-dev-0.
diff for David Lebel: 15742:
--- branch/ChangeLog Fri Oct 12 23:45:56 2001
+++ current/ChangeLog Fri Oct 12 23:45:56 2001
@@ -1,2 +1,2 @@
-2001-09-09 Bart Schaefer <schaefer@brasslantern.com>
+2001-09-09 Bart Schaefer <schaefer@zsh.org>
only in current/ChangeLog: Bart: 15106, small changes in 15152
only in current/ChangeLog: Back out 15266
only in current/ChangeLog: 16xxx
only in branch/ChangeLog: 16018
only in current/ChangeLog: 16006
only in current/ChangeLog: 16005
only in current/ChangeLog: 16002
only in current/ChangeLog: 16000
only in current/ChangeLog: 15995
only in current/ChangeLog: 15994
only in current/ChangeLog: 15991
only in current/ChangeLog: 15987
diff for 15983:
--- branch/ChangeLog Fri Oct 12 23:45:57 2001
+++ current/ChangeLog Fri Oct 12 23:45:57 2001
@@ -1,6 +1,6 @@
-2001-10-12 Oliver Kiddle <opk@zsh.org>
+2001-10-08 Oliver Kiddle <opk@zsh.org>
- * 15983: Completion/Unix/Command/_user_admin,
- Completion/Unix/Command/_sysctl, Completion/Unix/Type/_urls,
- Completion/Unix/Command/_webbrowser: darwin support in _sysctl,
- complete files for galeon
+ * 15983: Completion/Unix/Command/_wget, Completion/Unix/Type/_urls,
+ Completion/Unix/Command/_user_admin, Completion/Unix/Command/_sysctl,
+ Completion/Unix/Command/_webbrowser: update for wget 1.7, darwin
+ support in _sysctl, complete files for galeon
only in current/ChangeLog: 15980
only in branch/ChangeLog: 15974
only in current/ChangeLog: 15973
only in current/ChangeLog: 15964
only in current/ChangeLog: 15949
only in current/ChangeLog: 15946
only in current/ChangeLog: 15945
only in current/ChangeLog: 15944
only in current/ChangeLog: 15931
only in current/ChangeLog: 15919
only in current/ChangeLog: 15917
only in current/ChangeLog: 15895
only in current/ChangeLog: 15886
diff for 15882:
--- branch/ChangeLog Fri Oct 12 23:45:57 2001
+++ current/ChangeLog Fri Oct 12 23:45:57 2001
@@ -1,2 +1,2 @@
-2001-10-12 Oliver Kiddle <opk@zsh.org>
+2001-09-27 Oliver Kiddle <opk@zsh.org>
only in branch/ChangeLog: 15866, Sven 15468
only in current/ChangeLog: 15866
only in current/ChangeLog: 15851, 15948
only in current/ChangeLog: 15844
diff for 15837:
--- branch/ChangeLog Fri Oct 12 23:45:58 2001
+++ current/ChangeLog Fri Oct 12 23:45:58 2001
@@ -1,2 +1,2 @@
-2001-09-18 Wayne Davison <wayned@users.sourceforge.net>
+2001-09-17 Wayne Davison <wayned@users.sourceforge.net>
only in current/ChangeLog: 15836
only in current/ChangeLog: 15812
only in current/ChangeLog: 15809
only in current/ChangeLog: 15806
only in current/ChangeLog: 15783
only in current/ChangeLog: 15780
only in current/ChangeLog: 15779
only in current/ChangeLog: 15772
only in current/ChangeLog: 15770
only in current/ChangeLog: 15768
only in current/ChangeLog: 15766
only in current/ChangeLog: 15765
only in current/ChangeLog: 15763
only in current/ChangeLog: 15762
only in current/ChangeLog: 15740
only in current/ChangeLog: 15739
only in current/ChangeLog: 15734
only in current/ChangeLog: 15722
only in current/ChangeLog: 15721
only in current/ChangeLog: 15720
only in current/ChangeLog: 15713
only in current/ChangeLog: 15708
only in current/ChangeLog: 15702
only in current/ChangeLog: 15676
only in current/ChangeLog: 15669
only in current/ChangeLog: 15653
only in current/ChangeLog: 15650
only in current/ChangeLog: 15647
only in current/ChangeLog: 15638
only in branch/ChangeLog: 15630 & 15713
only in current/ChangeLog: 15630
diff for 15621:
--- branch/ChangeLog Fri Oct 12 23:45:59 2001
+++ current/ChangeLog Fri Oct 12 23:45:59 2001
@@ -1,2 +1,2 @@
-2001-09-09 Geoff Wing <gcw@zsh.org>
+2001-08-15 Geoff Wing <gcw@zsh.org>
only in current/ChangeLog: 15615
only in current/ChangeLog: 15608
only in current/ChangeLog: 15606
only in current/ChangeLog: 15597
only in current/ChangeLog: 15596
diff for 15594:
--- branch/ChangeLog Fri Oct 12 23:45:59 2001
+++ current/ChangeLog Fri Oct 12 23:45:59 2001
@@ -1,2 +1,2 @@
-2001-10-12 Oliver Kiddle <opk@zsh.org>
+2001-08-07 Oliver Kiddle <opk@zsh.org>
only in current/ChangeLog: 15590
only in current/ChangeLog: 15588
only in current/ChangeLog: 15586
only in current/ChangeLog: 15585
only in current/ChangeLog: 15584
only in current/ChangeLog: 15583
only in branch/ChangeLog: 15577
diff for 15574:
--- branch/ChangeLog Fri Oct 12 23:45:59 2001
+++ current/ChangeLog Fri Oct 12 23:45:59 2001
@@ -2,5 +2,10 @@
- * 15574: Completion/Unix/Command/_cvs, Completion/Unix/Type/_users,
- Completion/Unix/Command/_user_admin, Completion/Unix/Type/_groups,
- Completion/Unix/Type/_directories: new _user_admin completion for
- useradd, groupmod etc and remove redundant duplication in _cvs
+ * 15574: Completion/Unix/Command/_cvs, Completion/Unix/Command/_dd,
+ Completion/Unix/Command/_dict, Completion/Unix/Command/_grep,
+ Completion/Unix/Command/_loadkeys, Completion/Unix/Command/_ls,
+ Completion/Unix/Command/_patch, Completion/Unix/Command/_user_admin,
+ Completion/Unix/Command/_wget, Completion/Unix/Type/_diff_options,
+ Completion/Unix/Type/_directories, Completion/Unix/Type/_groups,
+ Completion/Unix/Type/_users: new _user_admin for useradd, groupmod etc,
+ rewrite of _dd to use _values and make more completions share
+ descriptions for long and short options
diff for 15562, Akinori Musha: 15559, 15563:
--- branch/ChangeLog Fri Oct 12 23:45:59 2001
+++ current/ChangeLog Fri Oct 12 23:45:59 2001
@@ -1,2 +1,2 @@
-2001-08-06 Oliver Kiddle <opk@zsh.org>
+2001-08-03 Oliver Kiddle <opk@zsh.org>
only in current/ChangeLog: 15549
only in current/ChangeLog: 15526
only in current/ChangeLog: 15511
only in current/ChangeLog: 15509
only in current/ChangeLog: 15508
only in current/ChangeLog: 15507
only in current/ChangeLog: 15498
only in current/ChangeLog: 15489
only in current/ChangeLog: 15488
diff for 15487:
--- branch/ChangeLog Fri Oct 12 23:45:59 2001
+++ current/ChangeLog Fri Oct 12 23:45:59 2001
@@ -2,3 +2,4 @@
- * 15487: Src/Zle/complete.c: fix for `--' before matches ignoring all
- -M options in compadd
+ * 15487: Completion/Base/Utility/_describe, Src/Zle/complete.c:
+ move pattern matching in the loop to make sure all match specs
+ are used
only in current/ChangeLog: 15485
only in current/ChangeLog: 15484
only in current/ChangeLog: 15482
only in current/ChangeLog: 15477
only in current/ChangeLog: 15472
only in current/ChangeLog: 15468
only in current/ChangeLog: 15432
only in current/ChangeLog: 15415
only in current/ChangeLog: 15409
only in current/ChangeLog: 15407
only in current/ChangeLog: 15389
only in current/ChangeLog: 15375
only in current/ChangeLog: 15354
only in current/ChangeLog: 15334
only in current/ChangeLog: 15329
only in current/ChangeLog: 15327
only in current/ChangeLog: 15305
only in current/ChangeLog: 15304
only in current/ChangeLog: 15291, 15292
only in current/ChangeLog: 15288
only in current/ChangeLog: 15279
only in current/ChangeLog: 15278 (Sven), 15390
diff for 15277:
--- branch/ChangeLog Fri Oct 12 23:46:00 2001
+++ current/ChangeLog Fri Oct 12 23:46:00 2001
@@ -1,4 +1,4 @@
-2001-07-05 Peter Stephenson <pws@csr.com>
+2001-07-06 Peter Stephenson <pws@csr.com>
- * 15277: Src/glob.c: bug with ${(S)...%%...}: the indices
+ * 15277: Src/glob.c: *real* bug with ${(S)...%%...}: the indices
for start and end of backreferences were incorrect.
only in current/ChangeLog: 15271
only in current/ChangeLog: 15266
only in current/ChangeLog: 15265
only in current/ChangeLog: 15250
only in current/ChangeLog: 15242
only in current/ChangeLog: 15234
only in current/ChangeLog: 15228
only in current/ChangeLog: 15211
only in current/ChangeLog: 15198
only in current/ChangeLog: 15181
only in current/ChangeLog: 15180
only in current/ChangeLog: 15169
only in current/ChangeLog: 15160 and Andrej zsh-users/3973
only in branch/ChangeLog: 15160
diff for 15151:
--- branch/ChangeLog Fri Oct 12 23:46:01 2001
+++ current/ChangeLog Fri Oct 12 23:46:01 2001
@@ -1,2 +1,2 @@
-2001-06-28 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
+2001-06-27 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
only in current/ChangeLog: 15123
only in current/ChangeLog: 15115
only in current/ChangeLog: 15099
only in current/ChangeLog: 15094
only in current/ChangeLog: 15087
diff for 15079:
--- branch/ChangeLog Fri Oct 12 23:46:01 2001
+++ current/ChangeLog Fri Oct 12 23:46:01 2001
@@ -1,2 +1,2 @@
-2001-06-28 Clint Adams <clint@zsh.org>
+2001-06-25 Clint Adams <clint@zsh.org>
only in current/ChangeLog: 15060
only in current/ChangeLog: 15057
only in current/ChangeLog: 15056
only in current/ChangeLog: 15050, 15054
only in current/ChangeLog: 15038
only in current/ChangeLog: 15030
only in current/ChangeLog: 15029
only in current/ChangeLog: 15023, 15027
only in current/ChangeLog: 14952
only in current/ChangeLog: 14939
only in current/ChangeLog: 14931
only in current/ChangeLog: 14929
diff for 14921:
--- branch/ChangeLog Fri Oct 12 23:46:02 2001
+++ current/ChangeLog Fri Oct 12 23:46:02 2001
@@ -2,3 +2,4 @@
- * 14921: Completion/Zsh/_zftp: autoload zfcd_match and zfget_match
- if necessary.
+ * 14921: Functions/Zftp/zfinit, Completion/Zsh/Command/_zftp:
+ Load tcp module for zftp; autoload zfget_match and zfcd_match
+ for _zftp.
only in current/ChangeLog: 14915
only in current/ChangeLog: 14863
only in current/ChangeLog: 14843
only in current/ChangeLog: 14827
only in current/ChangeLog: 14815
only in current/ChangeLog: 14813
diff for 14792:
--- branch/ChangeLog Fri Oct 12 23:46:03 2001
+++ current/ChangeLog Fri Oct 12 23:46:03 2001
@@ -2,4 +2,4 @@
- * 14792: Test/comptest: Don't import the current terminal type for
- the zpty terminal, because the current terminal might not be able
- to run ZLE (e.g., emacs shell mode).
+ * 14792: Src/Modules/tcp.h, Src/Modules/zftp.c: Shuffle around
+ several #include directives to get the sockaddr_in definition in
+ all the places it's needed.
only in current/ChangeLog: 14778
only in current/ChangeLog: 14770
only in current/ChangeLog: 14760
only in current/ChangeLog: 14758
only in branch/ChangeLog: 14679, Bart 14693, 14758, 14760
next prev parent reply other threads:[~2001-10-13 7:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-12 13:38 Oliver Kiddle
2001-10-12 14:30 ` Peter Stephenson
2001-10-12 14:45 ` Bart Schaefer
2001-10-13 7:39 ` Bart Schaefer [this message]
2000-10-14 19:02 ` Peter Stephenson
2001-10-15 12:06 ` Clint Adams
2001-10-16 13:10 ` Peter Stephenson
2001-10-16 17:08 ` Bart Schaefer
2001-10-16 17:41 ` Additional " Bart Schaefer
2001-10-17 7:15 ` Geoff Wing
2001-10-17 10:13 ` Adam Spiers
2001-10-17 11:18 ` Sven Wischnowsky
2001-10-13 21:47 ` Wayne Davison
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1011013073937.ZM368@candle.brasslantern.com \
--to=schaefer@brasslantern.com \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).