Gitraffe

Team Name

Raffe (https://gitraffe.com/)

Timeline

Fall 2020 – Spring 2021

Students

  • James Brady
  • Adarsh Yogesh Pai
  • Hugh Boy
  • Imtiaz Khaled
  • Nihar Gupte

Abstract

Gitraffe is a free, opinionated, cross-platform GUI client with a focus on clarity and intuitiveness. Gitraffe presents a feature set comparable to industry incumbents, with features like Interactive Rebase, Cherry Picking, Reflog + Reset, Tailored Workspaces, and Shell Mode. Gitraffe also seamlessly integrates with the three largest Git Hosting Services(by market share). In addition to this, Gitraffe proposes a novel textual interface that leverages Natural Language Understanding to understand user intent and recommend in-app operations.

Background

Version Control Systems (VCS) have been an intrinsic component of the modern Software Engineering lifecycle, facilitating effective collaboration and simultaneous contributions in engineering projects of varying scale. Among the variety of commonly used version control systems, Git, an open-source distributed source control system, is overwhelmingly favored due to its scalability and data integrity. Originating out of spat surrounding the free-of-charge status of BitKeeper, Linus Torvalds, the creator of the Linux kernel, developed Git in 2005 for managing the Linux kernel code, with a focus on simplicity, speed, scalability, and integrity. Git also operates in a distributed manner, similar in idea to BitKeeper’s distributed VCS architecture. Although the tool has matured considerably over time and retained its efficiency with large projects, extensions to the original offering have adversely affected usability and intuitiveness. Although guidance is available over forums, mailing lists, and engineering blogs, orchestrating and following Git workflows have become harder than before, especially for novices, primarily stemming from its steep learning curve, ambiguous API and conceptual model, and a lack of clear documentation at times. In short, Git has an inconvenient User Experience (UX) problem. Gitraffe is Team Raffe’s attempt at solving this user experience problem, through heightened focus on clarity, intuitiveness, and cogent direction.

Project Requirements

  1. The user shall be able to clone public and private Git repositories.
  2. The user shall be able to synchronize their local and remote repositories with Git push/pull/fetch.
  3. The user shall be able to stage and commit changes to files.
  4. The user shall be able to view previous commits.
  5. The user shall be able to view, delete, and create stashes.
  6. The user shall be able to open an integrated terminal, which provides autocomplete for various Git commands.
  7. The user shall be able to ask questions about Git commands and receive relevant in-app operations.
  8. The user shall be able to create Workspaces, which are groups of repositories.
  9. The user shall be able to perform Cherry Pick, Merge, Rebase, Interactive Rebase, and Reflog operations.
  10. The user shall be able to rename, delete, and create Git branches.

System Overview

The Gitraffe system can be split into five main components: the Module, the Update Server, the Chrome Extension, the English2Git REST API, and the Desktop Client. The Desktop Client and the Module are bundled together into a cross-platform (Windows, Mac, and Linux) application that must be installed on the user’s computer. The Client contains all the graphical interface components and the functionality necessary to communicate with the Module. The Module interacts with Git and NodeGit to fetch data and to perform operations on repositories. Each time the Client is launched, it contacts the Update Server to check if there are any updates that need to be downloaded. The Client communicates with the English2Git REST API to translate a user’s Git-related question into relevant actions that can be performed through the GUI.

Gitraffe’s Data flow diagram.

Results

Our team was successful in fulfilling our mission of making a beautiful, fully-featured, and completely free Git client. The client is currently available for download at gitraffe.com (see QR code below).

Future Work

In the future, we plan to work directly with beta testers to get feedback on how the application can be improved.

The natural evolution for Gitraffe involves expanding to include other popular source control systems like SVN(Subversion), Mercurial, and TFS(Team Foundation Server) and letting developers build custom flows on top of our platform – enabling further developer convenience.

Project Files

Project Charter

System Requirements Specification

Architectural Design Specification

Detailed Design Specification

Poster

Code

References

[1] Liu, B., & Lane, I., “Attention-based recurrent neural network models for joint intent detection and slot filling”, 2016, ArXiv:1609.01454 [Cs], http://arxiv.org/abs/1609.01454

[2] Git is too hard | Hacker News. (n.d.). Retrieved April 9, 2021, from https://news.ycombinator.com/ item?id=25121416

[3] “Church, L., Söderberg, E., & Elango, E. (2014). A case of computational thinking: The subtle effect of hidden dependencies on the user experience of version control.”

jrb1821