On Wed, Dec 12, 2012 at 02:03:56AM -0500, Patrick Donnelly wrote: > On Wed, Dec 12, 2012 at 1:32 AM, Jeff King <peff@xxxxxxxx> wrote: > > It would take a lot of effort to expose git-core's internals in a clean > > way; you'd probably be better off starting from scratch and rewriting > > large parts in a friendly library-like manner. Fortunately, there is > > already a project underway to do so: libgit2. It does not yet have > > feature parity with git, but it can do quite a bit. And there are > > already ruby and python bindings. > > Of course, this comes back to the issue of whether it's a good idea to > use perl/ruby/python as a front-end to regular git commands > (pull/push/etc.). Yeah, I think that is a separate issue, though. I cannot see us ever writing core commands like "git pull" in any scripting language besides POSIX shell due to dependency issues. So language bindings are really for things that are not going to go into git-core, or are ancillary commands that people can live without (e.g., git-add--interactive, remote helpers, etc). > While, yes, bindings can be made for these languages, you are now > making git depend on the presence of one of these languages in order > for git to function. With Lua, the (static) dependence is very small > yet brings much to git in terms of extensibility and maintainability. And I would include Lua in my list of "I cannot see..." above. It can be statically linked, so it is not a run-time dependency, but it would still be a build-time dependency. The community has historically been pretty resistant to dependencies (I do not care too much myself, though). I think doing anything significant in Lua would have the same problem as doing anything significant in Python: there would need to be substantial internal cleanup to make sane bindings. And again, that is what libgit2 is doing (and yes, there are Lua bindings for it already). Using libgit2 bindings would introduce a new dependency, of course, but that is on par with a Lua dependency. > As for Lua's suitability for your (2) point, I admit I'm not familiar > with how much "interacting with the outside world" the git commands > do; however, I would suspect that it is not significant enough to rule > Lua out? I did not mean to rule it out for point (2); I only meant that it is probably the only reasonable thing for point (1), whereas for point (2), we have many more options. I suspect Lua would do just fine given the right set of modules, though I tend to prefer other languages myself when embeddedness is not an issue. As for "interacting with the outside world", I was specifically thinking of stuff like git-send-email (currently in perl) and git-imap-send (written in C). They need to open network sockets and speak standard protocols. I suspect Lua would need a module or custom bindings to do the former at all, and certainly the code would be much simpler if we re-used standard modules for speaking SMTP and IMAP (which of course increases our dependencies again...). -Peff -- 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