[PATCH] perl/Git.pm: add rev_parse method
- From
- Lea Wiemann <lewiemann@gmail.com>
- Date
- May 30, 2008, 04:43 UTC
- Message-ID
- <1212122585-7350-1-git-send-email-LeWiemann@gmail.com>
The rev_parse method translates a revision name to a SHA1 hash, like the git-rev-parse command.
Signed-off-by: Lea Wiemann <LeWiemann@gmail.com> ---
This is part of my work to extend Git.pm to create a usable repository access abstraction layer for gitweb.
I've tested this method by calling it with a few parameters, but there's no test suite yet. I'll probably send a message to the mailing list about testing Git.pm soon.
This is my first patch to Git.pm, so please let me know if there is anything wrong with it!
perl/Git.pm | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/perl/Git.pm b/perl/Git.pm index d05b633..9ef8cb0 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -716,6 +716,28 @@ sub ident_person { return "$ident[0] <$ident[1]>"; } +=item rev_parse ( REVISION_NAME ) + +Look up the specified revision name and return the SHA1 hash, or +return undef if the lookup failed. See the git-rev-parse command. + +=cut + +sub rev_parse { + # We could allow for a list of revisions here. + my ($self, $rev_name) = @_; + + my $hash; + try { + # The --default option works around rev-parse's lack of + # support for getopt style "--" separators (it would fail for + # tags named "--foo" without it). + $hash = $self->command_oneline("rev-parse", "--verify", "--default", + $rev_name); + } catch Git::Error::Command with { }; + return undef unless defined $hash and $hash =~ /^([0-9a-fA-F]{40})$/; + $hash; +} =item hash_object ( TYPE, FILENAME )
-- 1.5.5.GIT