{"thread":{"id":"30009","subject":"Re: Git and Google Summer of Code 2012","startedAt":"2012-03-20T15:37:10Z","lastAt":"2012-03-21T14:36:40Z","messageCount":13,"participants":["Jakub Narebski","Junio C Hamano","Jeff King","André Walker"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"187332","messageId":"201203201637.10417.jnareb@gmail.com","threadId":"30009","inReplyTo":"001636c5c21b02c35904bba0ff9a@google.com","subject":"Re: Git and Google Summer of Code 2012","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2012-03-20T15:37:10Z","receivedAt":"2012-03-20T15:37:10Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 20 Mar 2012, André Walker wrote:\n\n> Hello Jakub, I tweeted to you, but as your last tweet was from January, I'm  \n> guessing here [personal email via Google Profile] is probably a better\n> place to talk.\n\nActually the discussion of GSoC project application ideas with mentoring\norganization[1] should take place in the open, on git mailing list,\ngit@vger.kernel.org.  (You don't need to be subscribed to send email to\nit, and there is custom on this mailing list of Cc-ing all people\nparticipating in discussion; you can read git mailing list via other\ninterfaces e.g. via GMane.)\n\nPerhaps this should be stated more clearly, for example in application\ntemplate[2].\n\n[1]: http://www.google-melange.com/gsoc/events/google/gsoc2012\n[2]: https://github.com/peff/git/wiki/SoC-2012-Template\n\n> I'm a Computer Science student from a Brazilian university, and I\n> have participated in GSoC last year with The Perl Foundation.\n>\n> I reworked the Catalyst MVC framework to use an Inversion of Control\n> framework called Bread::Board instead of it's home grown component\n> loading system. I was supposed to continue my work on it this year,\n> we were going to release Catalyst v6.0 with it, but TPF was not   \n> accepted in GSoC. I guess we'll have to ship it without GSoC then.\n>\n> Anyhow, I'd like to participate in it again this year, even if not  \n> continuing what I began last year. Preferably using Perl, but I guess I  \n> could try something different. And looking in the accepted orgs for GSoC,  \n> Git seemed a very cool option, I'd be very honored to work on it. I use git  \n> on most of my projects, but I have never delved in it's code.\n>\n> From the ideas page, I got interested in two items: \"Modernizing and\n> expanding Git.pm\", and \"Linus's ultimate content tracking tool\".\n> To be honest, the latter sounded awesome! But I don't know if I could\n> be able to pull it off, as I don't know how complex it would be.\n\nFrom what I understand \"Linus's ultimate content tracking tool\" is\nrather a sketch of an idea, rather than concrete project proposal.\nYou would have to carve a project from this proposal yourself.\n\n> I'd be willing to try though, if I could talk to the relevant people,\n> understand how the implementation would work, etc.\n\nPeople on git mailing list could help there, perhaps starting with\nperson that suggested it.\n\n> And, well, in the first one (Modernizing Git.pm) they pointed   \n> you as a possible mentor, so I'd like to know. First, how much of Git is  \n> actually in Perl? In other words, how much of it is implemented in Git.pm  \n> and related modules, or who would use it exactly? \n\nThere are quite a few git commands implemented in Perl, and there were\neven more before \"builtin-ification\" of git code (moving to C).  Those\ninclude the interactive part of git-add (git-add--interactive helper),\ngit-cvsimport, git-cvsserver and git-svn, git-send-email, git-difftool\nand gitweb.  Not all of those use Git.pm module (git-cvsimport, \ngit-cvsserver and gitweb do not); changing this might be part of GSoC\nproject.\n\nGit.pm currently does mainly cover safe and portable (ActiveState Perl)\ninvoking of git commands, and a bit of converting / translating\noutput to Perl (e.g. config_bool() method).\n\nIt is by no means complete; some of code could be refactored and moved\nfrom individual commands to Git.pm module.\n\n> Also, why is it not on CPAN? Wouldn't it be useful to other people to\n> write interfaces in Perl for Git?\n\nIt is not on CPAN probably because Git Development Community lack(s|ed)\na Perl hacker, having only Perl dabblers ;-P\n\nMore seriously, putting Git.pm on CPAN might be a part of this GSoC\nproject.  Not that CPAN lacks git modules: Git::Class, Git::PurePerl,\nGit::Repository, Git::Wrapper, Git::XS (libgit2 based)...\n\nNote however that Git.pm must (in my opinion) remain \"dual lived\" module,\ni.e. reside in git.git repository and be installable alongside git\nwith nothing but git sources.  This also means that any extra non-core\n(or even not installed by default with \"perl\" package) modules that\nGit.pm requires to work need to have copy in git.git repository just\nlike private-Error.pm (should be 'inc/Error.pm') does currently.\n\nGit.pm might ultimately be put in separate repository, and subtree-merged\ninto git.git like git-gui and gitk subsystems (or as submodule), but that\nwould require having real maintainer for this module.\n\n> It mentions replacing Error and Error::Simple for Try::Tiny and   \n> Exception::Class. What else should be modernized? And where else is there  \n> room for expansion?\n\nYou could borrow from IPC::Run, Capture::Tiny and similar modules to make\nit possible to capture stderr of git commands to separate string or\nseparate filehandle, or just silencing stderr completely.  Perhaps even\nallowing creating pipelines.\n\nYou could polish and modernize Git::Object, Git::Commit, Git::Tag,\nGit::Repo and Git::RepoRoot from GSoC 2008 project[2], and add similar\nmodules for other concepts: diff (tree level and patchset level), tree\n(directory), refs and refspec, etc.  All those with tests.\n\n[2]: git://repo.or.cz/git/gitweb-caching.git\n     http://repo.or.cz/w/git/gitweb-caching.git (gitweb)\n\nYou could separate somehow the idea of git commands that do not\nrequire repository like \"git version\" or \"git config --file\", or\n\"git init\" (Git::Cmd?), those that require repository but not working\narea like \"git log\" or \"git show\" (Git::Repo?), and those that require\nworking area like \"git status\" or \"git pull\" (Git::Repo::Workdir?).\n\nYou could, for example based on existing gitweb code, create Git::Config\nmodule that would read all configuration at once with `git config -l`,\nand not use one git command for one variable like current $git->config()\ndoes.\n\nYou could create interfaces to persistent \"git cat-file --batch\",\n\"git cat-file --batch-check\" and \"git diff-tree --stdin\".  IIRC gsoc2008\nproject includes something like that.\n\n\nAnd of course borrow^W steal interesting parts of Git::* modules\navailable on CPAN.\n\n> Do you think we could unite both projects, or it would   \n> be too much work? And if you're not the person I should be asking about the  \n> content tracking tool, could you point me to that person?\n\nI think it might be too much work, though prototyping \"Linus's ultimate\ncontent tracking tool\" in Perl might be good idea...\n\nHTH\n-- \nJakub Narebski\nPoland\n"},{"id":"187340","messageId":"7v62dz6v5c.fsf@alter.siamese.dyndns.org","threadId":"30009","inReplyTo":"201203201637.10417.jnareb@gmail.com","subject":"Re: Git and Google Summer of Code 2012","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-03-20T17:26:39Z","receivedAt":"2012-03-20T17:26:39Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> On Tue, 20 Mar 2012, André Walker wrote:\n>\n>> Hello Jakub, I tweeted to you, but as your last tweet was from January, I'm  \n>> guessing here [personal email via Google Profile] is probably a better\n>> place to talk.\n>\n> Actually the discussion of GSoC project application ideas with mentoring\n> organization[1] should take place in the open, on git mailing list,\n> git@vger.kernel.org.  (You don't need to be subscribed to send email to\n> it, and there is custom on this mailing list of Cc-ing all people\n> participating in discussion; you can read git mailing list via other\n> interfaces e.g. via GMane.)\n\nThe parenthesized part applies to general audience but not to GSoC\nstudents, I would think. Isn't the participation in the mentoring\ncommunity mandatory for them?\n"},{"id":"187342","messageId":"201203201844.55155.jnareb@gmail.com","threadId":"30009","inReplyTo":"7v62dz6v5c.fsf@alter.siamese.dyndns.org","subject":"Re: Git and Google Summer of Code 2012","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2012-03-20T17:44:54Z","receivedAt":"2012-03-20T17:44:54Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 20 Mar 2012, Junio C Hamano wrote:\n> Jakub Narebski <jnareb@gmail.com> writes:\n> > On Tue, 20 Mar 2012, André Walker wrote:\n> >\n> > > Hello Jakub, I tweeted to you, but as your last tweet was from January, I'm  \n> > > guessing here [personal email via Google Profile] is probably a better\n> > > place to talk.\n> >\n> > Actually the discussion of GSoC project application ideas with mentoring\n> > organization[1] should take place in the open, on git mailing list,\n> > git@vger.kernel.org.  (You don't need to be subscribed to send email to\n> > it, and there is custom on this mailing list of Cc-ing all people\n> > participating in discussion; you can read git mailing list via other\n> > interfaces e.g. via GMane.)\n> \n> The parenthesized part applies to general audience but not to GSoC\n> students, I would think. Isn't the participation in the mentoring\n> community mandatory for them?\n\nPerhaps being subscribed to git mailing list, and participating in\n#git or #git-devel IRC channel (and perhaps also #gsoc channel) is\nmandatory for GSoC students (though I think if it is so it should\nbe stated clearly in materials such as SoC-2012-Template application\ntemplate)...\n\n...but is it required also for _prospective_ (would-be) students? \n\n-- \nJakub Narebski\nPoland\n"},{"id":"187343","messageId":"20120320175422.GA20669@sigill.intra.peff.net","threadId":"30009","inReplyTo":"201203201844.55155.jnareb@gmail.com","subject":"Re: Git and Google Summer of Code 2012","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-03-20T17:54:22Z","receivedAt":"2012-03-20T17:54:22Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Mar 20, 2012 at 06:44:54PM +0100, Jakub Narebski wrote:\n\n> > > Actually the discussion of GSoC project application ideas with mentoring\n> > > organization[1] should take place in the open, on git mailing list,\n> > > git@vger.kernel.org.  (You don't need to be subscribed to send email to\n> > > it, and there is custom on this mailing list of Cc-ing all people\n> > > participating in discussion; you can read git mailing list via other\n> > > interfaces e.g. via GMane.)\n> > \n> > The parenthesized part applies to general audience but not to GSoC\n> > students, I would think. Isn't the participation in the mentoring\n> > community mandatory for them?\n> \n> Perhaps being subscribed to git mailing list, and participating in\n> #git or #git-devel IRC channel (and perhaps also #gsoc channel) is\n> mandatory for GSoC students (though I think if it is so it should\n> be stated clearly in materials such as SoC-2012-Template application\n> template)...\n> \n> ...but is it required also for _prospective_ (would-be) students? \n\nI would hesitate to ever call anything _mandatory_. A student who is\naware of how the git community works, is up-to-date with recent\ndiscussions on the proposed area of work, and who has interacted with\nthe developer community will have a much stronger application and be\nmore likely to succeed in their project.\n\nGiven that the mailing list is the center of the development community,\nI would expect reading at least some of it to be part of the above\ntasks. But whether they want to subscribe, read via nntp, read via list\narchives on gmane, or whatever, is up to the student. And I certainly\nwouldn't expect them to read every message; instead, they should read\nparts that interest them and seem applicable to their proposed work.\nBecause there is a lot of traffic on the list, it often helps to cull\nuninteresting bits by their subject, or whole threads after reading the\nfirst message of a thread and deciding it's boring.\n\n-Peff\n"},{"id":"187345","messageId":"4F68C5E4.3050306@andrewalker.net","threadId":"30009","inReplyTo":"20120320175422.GA20669@sigill.intra.peff.net","subject":"Re: Git and Google Summer of Code 2012","fromName":"André Walker","fromEmail":"andre@andrewalker.net","sentAt":"2012-03-20T18:01:08Z","receivedAt":"2012-03-20T18:01:08Z","isPatch":false,"sender":{"key":"andre@andrewalker.net","avatar":"https://gravatar.com/avatar/30629538efaccb36c1bed44fa1e943bc5bfdd3c4341775f735faa45db1231756?d=mp&s=160"},"body":"Well, one way or another, I do want to subscribe. I tried to do it \nthough, but somehow I'm still not subscribed.\n\nI mailed majordomo@vger.kernel.org with the message body \"subscribe \ngit\". I did it twice, yesterday, and today again. Am I doing something \nwrong, or should I just wait?\n\nOn 03/20/2012 02:54 PM, Jeff King wrote:\n> On Tue, Mar 20, 2012 at 06:44:54PM +0100, Jakub Narebski wrote:\n>\n>>>> Actually the discussion of GSoC project application ideas with mentoring\n>>>> organization[1] should take place in the open, on git mailing list,\n>>>> git@vger.kernel.org.  (You don't need to be subscribed to send email to\n>>>> it, and there is custom on this mailing list of Cc-ing all people\n>>>> participating in discussion; you can read git mailing list via other\n>>>> interfaces e.g. via GMane.)\n>>> The parenthesized part applies to general audience but not to GSoC\n>>> students, I would think. Isn't the participation in the mentoring\n>>> community mandatory for them?\n>> Perhaps being subscribed to git mailing list, and participating in\n>> #git or #git-devel IRC channel (and perhaps also #gsoc channel) is\n>> mandatory for GSoC students (though I think if it is so it should\n>> be stated clearly in materials such as SoC-2012-Template application\n>> template)...\n>>\n>> ...but is it required also for _prospective_ (would-be) students?\n> I would hesitate to ever call anything _mandatory_. A student who is\n> aware of how the git community works, is up-to-date with recent\n> discussions on the proposed area of work, and who has interacted with\n> the developer community will have a much stronger application and be\n> more likely to succeed in their project.\n>\n> Given that the mailing list is the center of the development community,\n> I would expect reading at least some of it to be part of the above\n> tasks. But whether they want to subscribe, read via nntp, read via list\n> archives on gmane, or whatever, is up to the student. And I certainly\n> wouldn't expect them to read every message; instead, they should read\n> parts that interest them and seem applicable to their proposed work.\n> Because there is a lot of traffic on the list, it often helps to cull\n> uninteresting bits by their subject, or whole threads after reading the\n> first message of a thread and deciding it's boring.\n>\n> -Peff\n>\n"},{"id":"187346","messageId":"20120320181857.GA20804@sigill.intra.peff.net","threadId":"30009","inReplyTo":"4F68C5E4.3050306@andrewalker.net","subject":"Re: Git and Google Summer of Code 2012","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-03-20T18:18:58Z","receivedAt":"2012-03-20T18:18:58Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"[-cc everyone but the list, as this will not interest the other people\n     directly]\n\nOn Tue, Mar 20, 2012 at 03:01:08PM -0300, André Walker wrote:\n\n> Well, one way or another, I do want to subscribe. I tried to do it\n> though, but somehow I'm still not subscribed.\n> \n> I mailed majordomo@vger.kernel.org with the message body \"subscribe\n> git\". I did it twice, yesterday, and today again. Am I doing\n> something wrong, or should I just wait?\n\nIt sounds like you are doing it right. And your emails look OK to me\n(and the list is accepting them when cc'd). Your original mails may have\nbeen greylisted, and waiting on your mail server to re-send them.\nDepending on how your mail server is configured, that might be a few\nminutes or a few hours. How long ago did you try?\n\n-Peff\n"},{"id":"187348","messageId":"4F68CBC4.1010507@andrewalker.net","threadId":"30009","inReplyTo":"20120320181857.GA20804@sigill.intra.peff.net","subject":"Re: Git and Google Summer of Code 2012","fromName":"André Walker","fromEmail":"andre@andrewalker.net","sentAt":"2012-03-20T18:26:12Z","receivedAt":"2012-03-20T18:26:12Z","isPatch":false,"sender":{"key":"andre@andrewalker.net","avatar":"https://gravatar.com/avatar/30629538efaccb36c1bed44fa1e943bc5bfdd3c4341775f735faa45db1231756?d=mp&s=160"},"body":"On 03/20/2012 03:18 PM, Jeff King wrote:\n> It sounds like you are doing it right. And your emails look OK to me\n> (and the list is accepting them when cc'd). Your original mails may have\n> been greylisted, and waiting on your mail server to re-send them.\n> Depending on how your mail server is configured, that might be a few\n> minutes or a few hours. How long ago did you try?\nRight. The first time was more than 11 hours ago, and the second 1 hour \nago. Is there a list administrator who can whitelist my address?\n"},{"id":"187350","messageId":"20120320183246.GA21429@sigill.intra.peff.net","threadId":"30009","inReplyTo":"4F68CBC4.1010507@andrewalker.net","subject":"majordomo subscription woes","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-03-20T18:32:46Z","receivedAt":"2012-03-20T18:32:46Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Mar 20, 2012 at 03:26:12PM -0300, André Walker wrote:\n\n> On 03/20/2012 03:18 PM, Jeff King wrote:\n> >It sounds like you are doing it right. And your emails look OK to me\n> >(and the list is accepting them when cc'd). Your original mails may have\n> >been greylisted, and waiting on your mail server to re-send them.\n> >Depending on how your mail server is configured, that might be a few\n> >minutes or a few hours. How long ago did you try?\n>\n> Right. The first time was more than 11 hours ago, and the second 1\n> hour ago. Is there a list administrator who can whitelist my address?\n\nWe can ask postmaster@vger, but before we do that, there's one more\nthing to check.  Majordomo will send a confirmation email with a code in\nit. Can you check on your end that majordomo's response email wasn't\nblocked as spam?\n\n-Peff\n"},{"id":"187353","messageId":"4F68CFA1.8020401@andrewalker.net","threadId":"30009","inReplyTo":"20120320183246.GA21429@sigill.intra.peff.net","subject":"Re: majordomo subscription woes","fromName":"André Walker","fromEmail":"andre@andrewalker.net","sentAt":"2012-03-20T18:42:41Z","receivedAt":"2012-03-20T18:42:41Z","isPatch":false,"sender":{"key":"andre@andrewalker.net","avatar":"https://gravatar.com/avatar/30629538efaccb36c1bed44fa1e943bc5bfdd3c4341775f735faa45db1231756?d=mp&s=160"},"body":"On 03/20/2012 03:32 PM, Jeff King wrote:\n> On Tue, Mar 20, 2012 at 03:26:12PM -0300, André Walker wrote:\n>\n>> On 03/20/2012 03:18 PM, Jeff King wrote:\n>>> It sounds like you are doing it right. And your emails look OK to me\n>>> (and the list is accepting them when cc'd). Your original mails may have\n>>> been greylisted, and waiting on your mail server to re-send them.\n>>> Depending on how your mail server is configured, that might be a few\n>>> minutes or a few hours. How long ago did you try?\n>> Right. The first time was more than 11 hours ago, and the second 1\n>> hour ago. Is there a list administrator who can whitelist my address?\n> We can ask postmaster@vger, but before we do that, there's one more\n> thing to check.  Majordomo will send a confirmation email with a code in\n> it. Can you check on your end that majordomo's response email wasn't\n> blocked as spam?\nYes, I re-checked that now to be sure, and there's nothing from \nmajordomo there.\n"},{"id":"187354","messageId":"20120320184709.GA21769@sigill.intra.peff.net","threadId":"30009","inReplyTo":"4F68CFA1.8020401@andrewalker.net","subject":"Re: majordomo subscription woes","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-03-20T18:47:10Z","receivedAt":"2012-03-20T18:47:10Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"Hi vger postmasters,\n\nAndré is having trouble getting subscribed to git@vger. His majordomo\nrequests get no response. Can you check on your end if they are being\ndropped, or if the responses are somehow not making it out?\n\nThanks.\n\n-Peff\n\n-- >8 --\nOn Tue, Mar 20, 2012 at 03:42:41PM -0300, André Walker wrote:\n\n> >>On 03/20/2012 03:18 PM, Jeff King wrote:\n> >>>It sounds like you are doing it right. And your emails look OK to me\n> >>>(and the list is accepting them when cc'd). Your original mails may have\n> >>>been greylisted, and waiting on your mail server to re-send them.\n> >>>Depending on how your mail server is configured, that might be a few\n> >>>minutes or a few hours. How long ago did you try?\n>\n> >>Right. The first time was more than 11 hours ago, and the second 1\n> >>hour ago. Is there a list administrator who can whitelist my address?\n>\n> >We can ask postmaster@vger, but before we do that, there's one more\n> >thing to check.  Majordomo will send a confirmation email with a code in\n> >it. Can you check on your end that majordomo's response email wasn't\n> >blocked as spam?\n>\n> Yes, I re-checked that now to be sure, and there's nothing from\n> majordomo there.\n"},{"id":"187355","messageId":"4F68DEC3.2090006@andrewalker.net","threadId":"30009","inReplyTo":"201203201637.10417.jnareb@gmail.com","subject":"Re: Git and Google Summer of Code 2012","fromName":"André Walker","fromEmail":"andre@andrewalker.net","sentAt":"2012-03-20T19:47:15Z","receivedAt":"2012-03-20T19:47:15Z","isPatch":false,"sender":{"key":"andre@andrewalker.net","avatar":"https://gravatar.com/avatar/30629538efaccb36c1bed44fa1e943bc5bfdd3c4341775f735faa45db1231756?d=mp&s=160"},"body":"On 03/20/2012 12:37 PM, Jakub Narebski wrote:\n> Actually the discussion of GSoC project application ideas with mentoring\n> organization[1] should take place in the open, on git mailing list,\n> git@vger.kernel.org.  (You don't need to be subscribed to send email to\n> it, and there is custom on this mailing list of Cc-ing all people\n> participating in discussion; you can read git mailing list via other\n> interfaces e.g. via GMane.)\nRight, thanks for pointing it out. Either way (doing GSoC or not), it'll \nbe cool to join the list.\n\n>  From what I understand \"Linus's ultimate content tracking tool\" is\n> rather a sketch of an idea, rather than concrete project proposal.\n> You would have to carve a project from this proposal yourself.\n> ...\n> People on git mailing list could help there, perhaps starting with\n> person that suggested it.\nThanks, I'm still thinking about it. I'll read with more time the e-mail \nin which Linus proposed the idea, and then I'll decide whether to look \nmore into it (mail him, etc).\n\n>> And, well, in the first one (Modernizing Git.pm) they pointed\n>> you as a possible mentor, so I'd like to know. First, how much of Git is\n>> actually in Perl? In other words, how much of it is implemented in Git.pm\n>> and related modules, or who would use it exactly?\n> There are quite a few git commands implemented in Perl, and there were\n> even more before \"builtin-ification\" of git code (moving to C).  Those\n> include the interactive part of git-add (git-add--interactive helper),\n> git-cvsimport, git-cvsserver and git-svn, git-send-email, git-difftool\n> and gitweb.  Not all of those use Git.pm module (git-cvsimport,\n> git-cvsserver and gitweb do not); changing this might be part of GSoC\n> project.\n>\n> Git.pm currently does mainly cover safe and portable (ActiveState Perl)\n> invoking of git commands, and a bit of converting / translating\n> output to Perl (e.g. config_bool() method).\n>\n> It is by no means complete; some of code could be refactored and moved\n> from individual commands to Git.pm module.\nGot it. I'm cloning git's code to help visualize it better.\n\n>> Also, why is it not on CPAN? Wouldn't it be useful to other people to\n>> write interfaces in Perl for Git?\n> It is not on CPAN probably because Git Development Community lack(s|ed)\n> a Perl hacker, having only Perl dabblers ;-P\nHaha, I see :) I hope I can be of some help!\n\n> More seriously, putting Git.pm on CPAN might be a part of this GSoC\n> project.  Not that CPAN lacks git modules: Git::Class, Git::PurePerl,\n> Git::Repository, Git::Wrapper, Git::XS (libgit2 based)...\n>\n> Note however that Git.pm must (in my opinion) remain \"dual lived\" module,\n> i.e. reside in git.git repository and be installable alongside git\n> with nothing but git sources.  This also means that any extra non-core\n> (or even not installed by default with \"perl\" package) modules that\n> Git.pm requires to work need to have copy in git.git repository just\n> like private-Error.pm (should be 'inc/Error.pm') does currently.\n>\n> Git.pm might ultimately be put in separate repository, and subtree-merged\n> into git.git like git-gui and gitk subsystems (or as submodule), but that\n> would require having real maintainer for this module.\nRight. Yeah, in a quick look on CPAN I saw those. I understand what you \nmean that it should remain dual lived. Is using local::lib a viable \noption? It would make it much easier to keep everything updated, and \nhave new required modules, etc. Though I guess that's something that \ncould be decided during development.\n\n>> It mentions replacing Error and Error::Simple for Try::Tiny and\n>> Exception::Class. What else should be modernized? And where else is there\n>> room for expansion?\n> You could borrow from IPC::Run, Capture::Tiny and similar modules to make\n> it possible to capture stderr of git commands to separate string or\n> separate filehandle, or just silencing stderr completely.  Perhaps even\n> allowing creating pipelines.\nI don't really understand what you mean by this. I should capture stderr \nfor Git.pm, or other git commands? And why would I do that? Is it to \nmanually get errors instead of Try::Tiny?\n\n> You could polish and modernize Git::Object, Git::Commit, Git::Tag,\n> Git::Repo and Git::RepoRoot from GSoC 2008 project[2], and add similar\n> modules for other concepts: diff (tree level and patchset level), tree\n> (directory), refs and refspec, etc.  All those with tests.\n>\n> [2]: git://repo.or.cz/git/gitweb-caching.git\n>       http://repo.or.cz/w/git/gitweb-caching.git (gitweb)\nRight, thanks, I'm taking a look at that too.\n\n> You could separate somehow the idea of git commands that do not\n> require repository like \"git version\" or \"git config --file\", or\n> \"git init\" (Git::Cmd?), those that require repository but not working\n> area like \"git log\" or \"git show\" (Git::Repo?), and those that require\n> working area like \"git status\" or \"git pull\" (Git::Repo::Workdir?).\n>\n> You could, for example based on existing gitweb code, create Git::Config\n> module that would read all configuration at once with `git config -l`,\n> and not use one git command for one variable like current $git->config()\n> does.\n>\n> You could create interfaces to persistent \"git cat-file --batch\",\n> \"git cat-file --batch-check\" and \"git diff-tree --stdin\".  IIRC gsoc2008\n> project includes something like that.\nSounds reasonable. Though some parts I still have to take a look at the \ncode to understand better.\n\n> And of course borrow^W steal interesting parts of Git::* modules\n> available on CPAN.\nSeems the best way to go :)\n\n> I think it might be too much work, though prototyping \"Linus's ultimate\n> content tracking tool\" in Perl might be good idea...\nYeah, now that you explained better, it's really too much work for GSoC. \nI'd better be realistic and pick one. Probably the Git.pm one is more \nrealistic and could be used afterwards by \"Linus's ultimate content \ntracking tool\", if it's ever made in Perl.\n\n> HTH\nIt does, thank you very much!\n\nCheers,\nAndré.\n"},{"id":"187363","messageId":"201203202350.05686.jnareb@gmail.com","threadId":"30009","inReplyTo":"4F68DEC3.2090006@andrewalker.net","subject":"Re: Git and Google Summer of Code 2012","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2012-03-20T22:50:05Z","receivedAt":"2012-03-20T22:50:05Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Tue, 30 Mar 2012, André Walker wrote:\n> On 03/20/2012 12:37 PM, Jakub Narebski wrote:\n> > André Walker wrote:\n\n> > > And, well, in the first one (Modernizing Git.pm) they pointed\n> > > you as a possible mentor, so I'd like to know. First, how much of Git is\n> > > actually in Perl? In other words, how much of it is implemented in Git.pm\n> > > and related modules, or who would use it exactly?\n> >\n> > There are quite a few git commands implemented in Perl, and there were\n> > even more before \"builtin-ification\" of git code (moving to C).  Those\n> > include the interactive part of git-add (git-add--interactive helper),\n> > git-cvsimport, git-cvsserver and git-svn, git-send-email, git-difftool\n> > and gitweb.  Not all of those use Git.pm module (git-cvsimport,\n> > git-cvsserver and gitweb do not); changing this might be part of GSoC\n> > project.\n> >\n> > Git.pm currently does mainly cover safe and portable (ActiveState Perl)\n> > invoking of git commands, and a bit of converting / translating\n> > output to Perl (e.g. config_bool() method).\n> >\n> > It is by no means complete; some of code could be refactored and moved\n> > from individual commands to Git.pm module.\n>\n> Got it. I'm cloning git's code to help visualize it better.\n[...] \n> > More seriously, putting Git.pm on CPAN might be a part of this GSoC\n> > project.  Not that CPAN lacks git modules: Git::Class, Git::PurePerl,\n> > Git::Repository, Git::Wrapper, Git::XS (libgit2 based)...\n> >\n> > Note however that Git.pm must (in my opinion) remain \"dual lived\" module,\n> > i.e. reside in git.git repository and be installable alongside git\n> > with nothing but git sources.  This also means that any extra non-core\n> > (or even not installed by default with \"perl\" package) modules that\n> > Git.pm requires to work need to have copy in git.git repository just\n> > like private-Error.pm (should be 'inc/Error.pm') does currently.\n> >\n> > Git.pm might ultimately be put in separate repository, and subtree-merged\n> > into git.git like git-gui and gitk subsystems (or as submodule), but that\n> > would require having real maintainer for this module.\n>\n> Right. Yeah, in a quick look on CPAN I saw those. I understand what you \n> mean that it should remain dual lived. Is using local::lib a viable \n> option? It would make it much easier to keep everything updated, and \n> have new required modules, etc. Though I guess that's something that \n> could be decided during development.\n\nlocal::lib is a good solution (which probably didn't exist at the time\nof writing Git.pm and putting private-Error.pm in 'perl/' subdirectory.\nWhether it is good enough, or should we put required non-core Perl\nmodules in 'inc/' to be able to install them with Git.pm...\n \nAnyway it could be decided at merge time.\n\n> > > It mentions replacing Error and Error::Simple for Try::Tiny and\n> > > Exception::Class. What else should be modernized? And where else is there\n> > > room for expansion?\n> >\n> > You could borrow from IPC::Run, Capture::Tiny and similar modules to make\n> > it possible to capture stderr of git commands to separate string or\n> > separate filehandle, or just silencing stderr completely.  Perhaps even\n> > allowing creating pipelines.\n>\n> I don't really understand what you mean by this. I should capture stderr \n> for Git.pm, or other git commands? And why would I do that? Is it to \n> manually get errors instead of Try::Tiny?\n\nGit commands might print some messages to stderr, even in the case where\nresult is not considered an error (e.g. \"git rev-parse --verify\", or\n\"git cat-file -t\").  Gitweb uses string form of 'exec' (well, 'open \"-|\"'\nto be more exact) with \" 2>/dev/null\" to silence warnings.  I'd like\nto be able to silence stderr, or capture it (like command_oneline() etc.\ncapture stdout) with something like existing command_* commands.\n \n[...]\n> > I think it might be too much work, though prototyping \"Linus's ultimate\n> > content tracking tool\" in Perl might be good idea...\n>\n> Yeah, now that you explained better, it's really too much work for GSoC. \n> I'd better be realistic and pick one. Probably the Git.pm one is more \n> realistic and could be used afterwards by \"Linus's ultimate content \n> tracking tool\", if it's ever made in Perl.\n\nWell, there is a question how many project will be funded by Google...\n-- \nJakub Narebski\nPoland\n"},{"id":"187398","messageId":"4F69E778.4000104@andrewalker.net","threadId":"30009","inReplyTo":"20120320183246.GA21429@sigill.intra.peff.net","subject":"Re: majordomo subscription woes","fromName":"André Walker","fromEmail":"andre@andrewalker.net","sentAt":"2012-03-21T14:36:40Z","receivedAt":"2012-03-21T14:36:40Z","isPatch":false,"sender":{"key":"andre@andrewalker.net","avatar":"https://gravatar.com/avatar/30629538efaccb36c1bed44fa1e943bc5bfdd3c4341775f735faa45db1231756?d=mp&s=160"},"body":"Attempt #3 failed again =(\n"}]}