A few months ago, brian posted a blog entry about patching modules using Git. In the ensuing discussion, I pointed at a possible way to automatise the process a step further by punting the generated patch to rt.cpan.org. The hack was well-received and, with (very) minimal coaxing, I was subsequently convinced to expand on the idea for the Perl Review.
The resulting piece is now available in
TPR 5.1. In the article, the
initial command-line hack has morphed into
four scripts -- git-cpan-init, git-cpan-clone,
git-cpan-update and git-cpan-sendpatch -- that
pretty much take care of all the administrative
overhead of module patching. In most cases,
grabbing a distro, fixing a bug and sending the
patch can be done in four lines:
$ git cpan-init Some::Module
$ git checkout -b mypatch
...hack hack hack...
$ git rebase -i cpan
$ git cpan-sendpatch
And, no, the lack of hyphen between git and cpan-X
isn't a typo; the article also covers how
to seamlessly integrate the new scripts into the
git infrastructure (as Edna Mode would say,
it's a non-feature, dahling).
Of course, I'm burning to say more, but I'll have to stop here. To know the whole story, you'll have to wait for The Perl Review to land in your mailbox (you are subscribed to TPR, right?).
cross-posted from Hacking Thy Fearful Symmetry.
I wrote something similar (Score:1)
I wrote a CPAN/BACKPAN -> git gateway a while back. The code is here:
http://git.jrock.us/?p=MetaCPAN.git;a=blob;f=bin/git-cpan;hb=HEAD [jrock.us]
I have been meaning to index the whole BACKPAN and host the generated YAML files publicly... but if you want to play with it right now, point the indexer at a minicpan or cpan mirror, and then say "git-cpan Foo::Bar". (The reason we need an index here is because Foo::Bar is not necessarily in a distribution called Foo-Bar, and the distribution name isn't necessarily the
Re: (Score:1)
Interesting. I've not been quite able to get it work, but it seems like a much more all-encompassing version of my quick hack. I'll have to keep my eye on it.
Are you still actively developing that project, or is it more sitting on the back burner?