Re: [PATCH/RFC 0/7] Support for Ruby
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Sep 21, 2013, 22:52 UTC
- Message-ID
- <CAMP44s3Shdg40go-WyGV8QKwEGoXg8hvEe8tetMyxvx5Sb7evw@mail.gmail.com>
- In-Reply-To
- <20130921212904.GA235845@vauxhall.crustytoothpaste.net>
On Sat, Sep 21, 2013 at 4:29 PM, brian m. carlson <sandals@crustytoothpaste.net> wrote:
Show 29 quoted lines
> On Sat, Sep 21, 2013 at 01:48:08PM -0500, Felipe Contreras wrote: >> Hi, >> >> It was discussed before that there was a need to replace Git scripts >> from perl and sh that utilize the 'git' binary to do everything they >> need, which requires many forks, and that creates problems on >> platforms like Windows. >> >> This is a first step meant to show how a solution using Ruby would look like. >> >> Other alternatives just don't cut it. Shell scripts are too simple, and >> invariably require forks. Perl could use Git's internal C code, but it's syntax >> is too cumbersome and it's loosing more and more popularity. Python and Ruby >> are the only modern languages that could fit all the needs, but Python's syntax >> is not ideal, specially considering the background of the Git community, and >> also, Ruby's C extensibility is simply superb. >> >> This patch series introduces Ruby bindings for Git's C internal library, and >> add example commands to show how it could be used, and how it resembles the >> original C code, shell code, and perl code. Basically, Ruby fits like a glove. > > A couple of things: first, I'm not opposed in principle to using Ruby > for git. As you say, it's a good language and it has much nicer C > bindings. > > As Junio has also pointed out in the past, there are people who aren't > able to use Ruby in the same way that they are Perl and Python. If it's > announced now, Git 2.0 might be a good time to start accepting Ruby > scripts, as that will give people time to plan for its inclusion.
Yes, and there are people who aren't able to use Perl/Python in the same way they use Ruby. That's why I tried to show why Ruby makes a perfect choice.
Show 7 quoted lines
> On a more technical note, my objection to your binding implementation is > that fundamentally, Ruby is an object-oriented language, but your > bindings don't take advantage of that; they're completely procedural. I > realize most of the git codebase is as well, but that's because it's > written in C. It seems a shame not to take advantage of what the > language offers, especially since I know others are going to want to > take advantage of the provided bindings.
For the moment the bindings are only for Git commands, so the primary users are Git developers, that's why I tried to leave them close to the current C/shell/perl code.
Having said that, it does use a little bit of object-oriented stuff:
commit = lookup_commit_reference(sha1) p commit.buffer
Now, if anybody has ideas into how the bindings could be more object oriented, I'm all ears, but unfortunately what I foresee is that nobody will consider this proposal seriously.
Cheers.
-- Felipe Contreras