20/49  

Git integration

Mentor: Max Leske
Second mentor: Camillo Bruni
Level: Intermediate
Invited students:
Students interested: Ante Pocedulić(very), Tanguy Godquin, Milton Mamani(lightly), Matthias Springer(lightly)

Description

Git (http://git-scm.com) is a famous distributed revision control system that is gaining momentum.

Smalltalk systems have had distributed revision control systems for quite some time now. However, the Smalltalk community can't keep up with all the wonderful works done in other communities. We should reuse as much of what exist today to stop loosing time reinventing the wheel. That's why this project is so important.

Technical Details

The goal of this project is to integrate Git within Smalltalk. The Git object model has already been implemented
(http://smalltalkhub.com/#!/~FileSystemGitDev/FileSystem-Git). The student will have to implement what is missing, that is to say:

  • the Git network protocol with good unit-tests (already started);
  • a new back-end for Monticello (a revision control system used in some Smalltalk environments) that fetches from and saves to a Git repository;
  • a simple graphical user interface (written in the Spec GUI framework) to manipulate Git repositories.

The project will be realized in the Pharo environment as Pharo is the development platform we used to start the project. To fulfill the project's goal, the student will first have to learn Pharo, Git (and its underlying network protocol) and Spec.

Benefits to the Student

  • integration into a prolific research group, fond of software development and programming languages;
  • discover completely different ways to program object-oriented applications;
  • understand how protocols are designed and implemented;
  • get insights about designing graphical user interfaces;
  • potential integration as a master and/or PhD student either within the group or within one of its numerous partners around the world (Switzerland, Chile, Belgium, Argentina).

Benefits to the Community

This work will allow the community to reuse existing tools (e.g., hosting services, continuous integration, web interfaces, code review) instead of loosing energy and time reinventing the wheel.




Updated: 9.4.2013