Parrot-libgit2 Final Report

GSoC has come to an end finally and my project is done. The project was about implementing bindings to libgit2. I learned quite a bit about git internals, about how libraries are implemented, and parrot stuff.

I began with a better libgit2 header file parser which then creates the NCI low-level definitions. It was accurate enough so that I've had to update it only once since the mid-term data. There is a also a better unified buildsystem, though there are still rough edges around it.

parrot-libgit2 report: References, Trees, Remotes

This was a fairly productive week, with many new features.

Parrot-libgit2 report: Using parrot-libgit2

Now that a minimal api is ready, its time that I document how to use it:

Its possible to use the library to deal with repositories, the repository index, low-level object access, commits, revision walking, blobs, git configs and more. Major things that are still not done are dealing with references and trees, which are only waiting on a few issues(mentioned below).

These are rough examples of how to use the major classes.

Opening repositories:

using Git2.Repository;
var repo = new Git2.Repository("/path/to/repository");

Dealing with the index:

Parrot-libgit2 report

This report comes rather late, so let me give an overview of what's been happening.
The last report talked about an unified buildsystem. Since then the project has made a little progress. There were bugs in the unified buildsystem which meant that that the pir file which was generated from the nci file was stale at best, representing older versions of libgit2. This made a lot of work go down the drain, as a lot of my debugging was aimed at sending the correct datastructures. However this was a good step in finding my mistakes and moving ahead.

parrot-libgit2: Unified Build System

One of the objectives before the midterms was to unify the buildsystem. Earlier the build process consisted of a separate Makefile and a setup.winxed file, and yet manually required people to go and build Rosella themselves.

GSoC weekly report

Another slow week, with much work being blocked by a simple bug that I am debugging with the help of the several people now (Details below). The uncompleted objectives of this week would mean that I would need to reschedule some of my future efforts. I tried to schedule my project as best as I can with previous knowledge, but its hard to predict the problems that will come up. I am reminded of this blog post, where optimism in scheduling a project is cautioned against.

parrot-libgit2 weekly report: Indexes and Repositories

This was a rather slow week in terms of work done. The work done this week started out with merging the nciupdate branch with master. Having PMC's as default fallbacks for unparseable arguments made the nci defs much more accurate. Of course tests are still needed, and some flaws would come forward as other work builds upon that work.
Then the next part involved cleaning out some more cruft from the old project. This included redundant entries in .gitmodules, duplicated directories and some other makefile work.

GSoC weekly report: NCI updates for parrot-libgit2

Hello everyone,

This was my first week of GSoC working on parrot-libgit2. parrot-libgit2 is aimed at providing a low-level PIR binding to libgit2 as well as high-level winxed bindings. The schedule is available here. Duke Leto wrote the initial code a couple of years ago, but since then the code had bitrotted.

Syndicate content