The rev_parse method translates a revision name to a SHA1 hash, like the git-rev-parse command. Signed-off-by: Lea Wiemann <LeWiemann@xxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html