GSoC/GCI Archive
Google Summer of Code 2012

Git

Web Page: https://github.com/peff/git/wiki/SoC-2012-Ideas

Mailing List: https://git.wiki.kernel.org/articles/g/i/t/GitCommunity_c4e3.html

At almost seven years old, Git is probably the most widely-used distributed revision control system in Open Source. Many large and successful projects use git, including the Linux Kernel, Perl, Eclipse, Gnome, KDE, Qt, Ruby on Rails, Android, PostgreSQL, Debian, and X.org.

Projects

  • Designing a faster index format The current git index is pretty slow when working with large git repositories, because the whole index has to be rewritten for nearly every operation. This problem can be solved by designing a new index format, which will be using a b-tree structure, which will be described in more detail in the proposal.
  • Finishing network support for libgit2 So far, libgit2 supports fetching objects over http://, git:// and file://. This year's GSoC task is to finish network support for libgit2, namely * fetch over ssh (including an API for SSH key management), * support for packing objects (indispensable for push), * push over http, git and ssh. The existing network code is written in a modular manner and allows to be reused (regarding socket handling for example).
  • Remote helper for Subversion Git uses remote helper to connect to remote repositories to retrieve (fetch) and upload (push) changesets. The goal is to create a remote helper that allows those operations on remote subversion (svn) repositories. To keep the scope adequate I concentrate on importing (fetching) svn revisions. The major challenge is mapping svn branches (which are weird to detect) to git branches.