librelist archives

« back to archive

End year project : minimal Git client based on libgit2

End year project : minimal Git client based on libgit2

From:
Romain Geissler
Date:
2011-05-19 @ 12:33
Hello everyone.

We are a team of four students from a French school of
engineering (Ensimag: http://ensimag.grenoble-inp.fr/). To end the
school year, we are supposed to work on a four-week full-time project,
under the supervision of Matthieu Moy, who has been following Git's
development for quite a few years now. We thought it would be
interesting to contribute to git/libgit2. We are especially interested
in one of the GSoC2011 ideas : Build a minimal Git client based on
libgit2 
(http://git.wiki.kernel.org/index.php/SoC2011Ideas#Build_a_minimal_Git_client_based_on_libgit2)

We started by taking a look at libgit2 API and Git source code, and we
have already begun to write some (quick and dirty) code.
We would like to know more about your expectations around the
"minimal" git client. What are the key features to implement ?
According to the GSoC proposal, we should implement some high level
functionalities (push, commit, branch...). Perhaps we should
concentrate on more "plumbing" commands ?

Regards,

Bettaoui Nassima
Geissler Romain
Glesser David
Pegon Marc.

Re: [libgit2] End year project : minimal Git client based on libgit2

From:
Vicent Marti
Date:
2011-05-19 @ 20:13
Yo!

On Thu, May 19, 2011 at 3:33 PM, Romain Geissler
<romain.geissler@gmail.com> wrote:
> Hello everyone.
>
> We are a team of four students from a French school of
> engineering (Ensimag: http://ensimag.grenoble-inp.fr/). To end the
8> school year, we are supposed to work on a four-week full-time project,
> under the supervision of Matthieu Moy, who has been following Git's
> development for quite a few years now. We thought it would be
> interesting to contribute to git/libgit2. We are especially interested
> in one of the GSoC2011 ideas : Build a minimal Git client based on
> libgit2 
(http://git.wiki.kernel.org/index.php/SoC2011Ideas#Build_a_minimal_Git_client_based_on_libgit2)
>
> We started by taking a look at libgit2 API and Git source code, and we
> have already begun to write some (quick and dirty) code.
> We would like to know more about your expectations around the
> "minimal" git client. What are the key features to implement ?
> According to the GSoC proposal, we should implement some high level
> functionalities (push, commit, branch...). Perhaps we should
> concentrate on more "plumbing" commands ?

Yay! it's awesome that you chose libgit2 as the topic for your final
project! Our expectations for the minimal client were pretty high
--mainly because it was a paid project that was supposed to last three
months-- but of you are doing this in just one month, and even if
you're a small team and not an individual, you probably won't be able
to complete the original client project, so you should probably set
some more realistic goals.

The main goal of the minimal client was being able to reuse the unit
tests from Core git to test libgit2, so if you want a good starting
point, grab an existing test  for a command (it doesn't matter if it's
high level or plumbing) and hack on the minimal client until it passes
it! That should get you moving quite fast.

If you encounter any problems or have any doubts, I'll gladly help you
through this mailing list, or just contact me directly. As soon as you
find some bugs (and trust me, you will), open an issue in our tracker
and we'll get right to them.

Cheers guys, best of luck.

Vicent

Re: [libgit2] End year project : minimal Git client based on libgit2

From:
Romain Geissler
Date:
2011-05-23 @ 01:40
Hello

> Yay! it's awesome that you chose libgit2 as the topic for your final
> project! Our expectations for the minimal client were pretty high
> --mainly because it was a paid project that was supposed to last three
> months-- but of you are doing this in just one month, and even if
> you're a small team and not an individual, you probably won't be able
> to complete the original client project, so you should probably set
> some more realistic goals.

That's what we found out this last week, we didn't really know where to 
start. Finally we come out to this : a fully usable git client. When a 
command and the requested switches are not supported by our minimal 
libgit2 implementations we fall back to the usual git.

> 
> The main goal of the minimal client was being able to reuse the unit
> tests from Core git to test libgit2, so if you want a good starting
> point, grab an existing test  for a command (it doesn't matter if it's
> high level or plumbing) and hack on the minimal client until it passes
> it! That should get you moving quite fast.

Thanks to fallback to the usual git client, we can use the huge git base 
test on our client.

For now we have a rough git-log (without arguments) command, but there are
still cases that we don't handle (print a merge notice in the commit 
description for example). But that's maybe not the better command to test 
libgit2 through.

We also implemented ls-files --stage but some test are broken, we have to 
find out what's the issue.

The public repo can be found here https://github.com/Romain-Geissler/git2

Romain Geissler

Re: [libgit2] End year project : minimal Git client based on libgit2

From:
David Glesser
Date:
2011-05-20 @ 16:39
 
> The main goal of the minimal client was being able to reuse the unit
> tests from Core git to test libgit2, so if you want a good starting
> point, grab an existing test  for a command (it doesn't matter if it's
> high level or plumbing) and hack on the minimal client until it passes
> it! That should get you moving quite fast.

We are going to do a "test framework" which will test commands implemented
with libgit2 or fallback to git for the commands not implemented yet.
Obviously we will only be able to implement commands partially (due to the
lack of features in libgit2). Perhaps it can be interesting to list these
missing features; and if we have time it can be more interesting to
implement some.

We didn't find a way to find an object given the beginning of its SHA1. Is
it one of the missing features of libgit2? Or maybe we just missed it?


> If you encounter any problems or have any doubts, I'll gladly help you
> through this mailing list, or just contact me directly. 

Thanks :)