threads / patch / 2374

patchSupport for passing path to custom map in git-shortlog.perl

Subject: [PATCH] Support for passing path to custom map in git-shortlog.perl

## tl;dr

4 messages between Nov 6, 2005 and Nov 7, 2005. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Petr Baudis· Nov 6, 2005, 23:07 UTC · lore
Aside of looking into .mailmap, add support for -m MAPFILE.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
 Documentation/git-shortlog.txt |   10 +++++++++-
 git-shortlog.perl              |   10 ++++++++++
 2 files changed, 19 insertions(+), 1 deletions(-)
Show changes to 2 files +19 −1

Documentation/git-shortlog.txt, git-shortlog.perl

diff --git a/Documentation/git-shortlog.txt b/Documentation/git-shortlog.txt
index 65ca77f..c8de78e 100644
--- a/Documentation/git-shortlog.txt
+++ b/Documentation/git-shortlog.txt
@@ -8,13 +8,21 @@ git-shortlog - Summarize 'git log' outpu
 
 SYNOPSIS
 --------
-'git-log --pretty=short | git shortlog'
+'git-log --pretty=short | git shortlog [-m MAILMAP_FILE]'
 
 DESCRIPTION
 -----------
 Summarizes 'git log' output in a format suitable for inclusion
 in release announcements.
 
+OPTIONS
+-------
+-m MAILMAP_FILE::
+	File containing the email-to-realname mappings to be used
+	in case of the realname missing in the "Author" field of
+	the commit. In addition, the '.mailmap' file and few predefined
+	mappings are also always searched.
+
 
 Author
 ------
diff --git a/git-shortlog.perl b/git-shortlog.perl
index 7283159..cd83dbe 100755
--- a/git-shortlog.perl
+++ b/git-shortlog.perl
@@ -1,6 +1,7 @@
 #!/usr/bin/perl -w
 
 use strict;
+use Getopt::Std;
 
 my (%mailmap);
 my (%email);
@@ -9,6 +10,9 @@ my $pstate = 1;
 my $n_records = 0;
 my $n_output = 0;
 
+my (%opts);
+getopts('m:', \%opts);
+
 sub shortlog_entry($$) {
 	my ($name, $desc) = @_;
 	my $key = $name;
@@ -132,6 +136,12 @@ sub setup_mailmap {
 		read_mailmap($fh, \%mailmap);
 		close $fh;
 	}
+	if ($opts{'m'}) {
+		my $fh = undef;
+		open($fh, '<', $opts{'m'}) or die "Cannot open mailmap $opts{m}: $!";
+		read_mailmap($fh, \%mailmap);
+		close($fh);
+	}
 }
 
 sub finalize {
Junio C Hamano· Nov 7, 2005, 00:11 UTC · re: Petr Baudis · lore

Re: [PATCH] Support for passing path to custom map in git-shortlog.perl

Petr Baudis <pasky@suse.cz> writes:
> Aside of looking into .mailmap, add support for -m MAPFILE.

I thought about this when I did .mailmap because I felt the more flexibility the better, but wouldn't maintaining the project-wide .mailmap as part of the project easier to manage?

Petr Baudis· Nov 7, 2005, 21:54 UTC · re: Junio C Hamano · lore

Re: [PATCH] Support for passing path to custom map in git-shortlog.perl

Dear diary, on Mon, Nov 07, 2005 at 01:11:33AM CET, I got a letter where Junio C Hamano <junkio@cox.net> told me that...

Show 7 quoted lines
> Petr Baudis <pasky@suse.cz> writes:
> 
> > Aside of looking into .mailmap, add support for -m MAPFILE.
> 
> I thought about this when I did .mailmap because I felt 
> the more flexibility the better, but wouldn't maintaining the
> project-wide .mailmap as part of the project easier to manage?

Ok, I'm not a die-hard proponent of this change (the genesis is that it comes from the ages before .mailmap was supported and was originally coupled with -n which disabled the internal mappings - but then .mailmap got supported, I deemed -n useless but this still seemed worth something so I passed it along), but I think it can be useful - either when you want to work on readonly tree, or when you want to support custom mailmap in addition to the default project's one without interference... *shrug*

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.
Junio C Hamano· Nov 7, 2005, 22:44 UTC · re: Petr Baudis · lore

Re: [PATCH] Support for passing path to custom map in git-shortlog.perl

Petr Baudis <pasky@suse.cz> writes:
> ... I think it can be useful - either when you
> want to work on readonly tree, or when you want to support custom
> mailmap in addition to the default project's one without interference...

Ah, that sort of makes sense. On the other hand you could run git-shortlog in a separate directory right now by piping the git-log output to "(cd somewhere && git-shortlog)", so...

Come to think of it, why not make git-shortlog take the same set of parameters as git-log takes (perhaps except --pretty)? Then the issues you raised starts to make sense and we would certainly want -m MAPFILE option there.

← back to recent threads