Subject: Re: Git.pm

From: Jakub Narebski <[email-masked]>
Date: Thu, 20 Nov 2008 18:56:51 -0800 (PST)

nadim khemir <[email-masked]> writes:

(CC-ed Petr Baudis and Lea Wiemann).

> Hi, I'm new on this mailing list and quite new to git too. I said
> on IRC that I develop mainly in Perl (http://search.cpan.org/~nkh/)
> when I do open source. I heard that Git.pm needed some love and I
> can take over its maintenance if there are things that need to be
> done.
> 
> I need to know:
> 
>         - what needs to be done
>         - who was doing maintenanace before
>         - how do you want to release it
>           (perl modules are best placed on CPAN (too))
>         - what (and who) is depending on Git.pm
>         - what would be expected of me
> 
> As you may have seen in another mail, the Perl community is getting 
> interested in git.

Actually there are one and a half of Perl interfaces to Git: Git.pm
created by Pasky (who, as far as I understand is not a Perl hacker)
which is in git.git repository, and Git::Repo and friends created by
Lea Wiemann during her work on "gitweb caching" project at Google
Summer of Code 2008 (you can find her repository at git wiki page
http://git.or.cz/gitwiki/SoC2008Projects).

If I remember history of Git.pm correctly, it was first created as a
way to collect together and uniquify various versions of safe_pipe and
safe_qx which were used by various Perl scripts in git; something like
Perl version of git-sh-setup.sh for shell scripts... At first it even
used XS in parts, but the build system was deemed too unportable (it
depended on -fPIC). One of design decisions was to use Error.pm for
throwing errors; I'm not a Perl hacker, so I cannot say if this was a
good decision, and if implementation of this part is good.

Lea Wiemann work on Git::Repo and friends was created as object
oriented interface. It was build from ground up instead of reusing
Git.pm to be not encumbered by Git.pm cruft... unfortunately it means
also abandoning all the work that went in Git.pm to make it portable
(read: make it work with crippled ActiveState Perl). You can find
discussion on the design of Git::Repo and decision of it being clean
state implementation at link given by Pasky.

P.S. I have "[RFC] Git Perl bindings, and OO interface" half-written
(well, more like a third), a bit stalled. I'll try to find time to
finish it and send it to git mailing list.

P.P.S. "git grep 'use Git'" finds git-add--interactive.perl,
git-send-email and git-svn. Probably other Perl scripts (including
gitweb) could make use of it...

-- 
Jakub Narebski
Poland
ShadeHawk on #git