[PATCH/RFC 4/4] contrib: contacts: interpret committish akin to format-patch
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jun 30, 2013, 11:08 UTC
- Message-ID
- <1372590512-21341-5-git-send-email-sunshine@sunshineco.com>
- In-Reply-To
- <1372590512-21341-1-git-send-email-sunshine@sunshineco.com>
As a convenience, accept the same style committish as accepted by git-format-patch. For example:
% git contacts master
will consider commits in the current branch built atop 'master', just as "git format-patch master" will format commits built atop 'master'.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- contrib/contacts/git-contacts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/contrib/contacts/git-contacts b/contrib/contacts/git-contacts index abb90a1..10d77d3 100755 --- a/contrib/contacts/git-contacts +++ b/contrib/contacts/git-contacts @@ -104,9 +104,26 @@ sub commits_from_patch { close $f; } +sub parse_rev_args { + my @args = @_; + open my $f, '-|', + qw(git rev-parse --revs-only --default HEAD --symbolic), @args + or die; + my @revs; + while (<$f>) { + chomp; + push @revs, $_; + } + close $f; + return @revs if scalar(@revs) != 1; + return "^$revs[0]", 'HEAD' unless $revs[0] =~ /^-/; + return $revs[0], 'HEAD'; +} + sub commits_from_rev_args { my ($commits, $args) = @_; - open my $f, '-|', qw(git rev-list --reverse), @$args or die; + my @revs = parse_rev_args(@$args); + open my $f, '-|', qw(git rev-list --reverse), @revs or die; while (<$f>) { chomp; my $id = $_;
-- 1.8.3.2