Git Manager

Overview

The Git Manager is a tool to act as a complete and convenient interface between various online repository hosting services and Processing, and to integrate the awesomeness of version control with Processing. It is meant to be able to provide not only all the offline features of Git, but also the power of collaboration and numerous other features that online repository hosting services brings to the table.

  • To report a bug or request a feature not in the pipeline, please proceed here.
  • A quick and (almost) complete to-do list of all features in the pipeline may be found here.
  • The latest release can be downloaded from here.
  • The complete source is available under the GNU-GPL here.

The tool is compatible with versions 3.011a and up. Here’s a quick screenshot of the tool explaining the various components:

Git Manager tool for processing reference

An overview of the Git Manager

  • Platforms tested on: Windows 8.1, Ubuntu 14.04
  • Last updated on: 24th July, 2015

The Complete Plan

The tool is far from done, and what is present in the Contributions Manager is just v0.2. Once the entire tool is done, here’s a quick overview of what it might look like:

Features, Components and Implementation details

Here is a list of the features that will be included in this project:

  • The Interface

    The interface will be intuitive, with a GUI similar to that of Processing. The entire interface will be done with classes in java.swing and java.awt.

    The will be different “Levels of Expertise”, selectable from the “Expertise Level Menu”, and the image buttons shown in the Git Option Toolbar will vary based on the expertise level selected (much like how the toolbar buttons vary based on the mode in Processing). For example, while the “Novice” level will have an integrated “Snapshot” button, where all relevant files are added and committed in one go, the “Pro” level has separate add and commit buttons, where the user has to select which files to stage, and which of the staged files are to be committed. Further, things will often be simplified in the “Novice” level. For example, a “bring back to last commit state” will be provided, which is basically a git reset –hard. However, the “Pro” level will have a “git reset” option, where the various flags are presented to the user as a list from which (s)he can choose the appropriate context in which the reset is to be used.
    There will also be an arrow to show the “Online Repo” popup menu, where the user can select the online repo which (s)he wants to work with. The options will be displayed as another toolbar with icon-buttons specific to the option the user has chosen, similar to the Git Option Toolbar, but below it.
    In case the user isn’t comfortable with the toolbars, an option to hide all toolbars shall be provided. Note that all the operation that can be performed via a toolbar (and many more, not-so-frequently-used ones), will be available via the menu bar at the top.

    Another important part of the UI is the Task Pane, found in the main body, below the toolbars. It will be used for convenient visualization of a number of things depending on the option selected by the user: status of the files and folders in the sketch, visualizations of file history, branches in existence, or the diffs of a particular file with respect to the last commit (or a commit before that).

    Here’s the GUI mock-up of the tool:

    Git Manager GUI mock-up

    Labelled GUI mock-up of the Git Manager

    The tool will permit a high level of customization. For example, while by default a repository will be made at the sketch level, users may choose to have it at the sketchbook level instead.

    To make the interface visually appealing, I shall be using GIMP, particularly to design the icons of the buttons and the file’s status icons.

  • The Code

    The following describes the code that’ll go behind the making of this tool:

    • JGit library
      This library will be used to provide all offline git-related services ( such as git add, git commit, git revert, git branch, etc.).
    • GitHub Java API
      This library, which makes using the GitHub API in java easy, will be used to provide GitHub specific features- for example, getting the details of a user’s GitHub Repository, forking a repository into the user’s GitHub account, etc.
    • java.net package
      The classes in this package (such as URL) will have to be extensively to use the BitBucket REST APIs and SourceForge APIs.
    • Google Gson library
      The Google Gson library will be used to parse data (which is in JSON format) that is accessed via the BitBucket REST and SourceForge APIs.
    • BitBucket REST API
      BitBucket REST APIs will be used to provide BitBucket features (like creating an issue in a repository, for example).
    • SourceForge API
      SourceForge APIs will be used to provide SourceForge-related features (such as details about a repository hosted on SourceForge).
  • The Documentation

    Documentation is an essential part of this project, and will include not only documentation of the source-code and about how to use the tool, but also videos about the various features of this project, how to use them and what they stand for.

Note: A number of these ideas originated from a discussion with the Processing community. The thread can be found here.

Progress- 2014 Legacy

At present, a mock-up of the user interface has been completed, with the “Novice” toolbar visible, and the Expertise Level Menu and the Online Repo Menus displaying properly. Further, a few basic Git operations (git add, git commit, git init, git push, “snapshot”) are operational. A menu bar has been displayed, and is fairly filled up. Clicking on the GitHub icon in the Online Repo Menu, causes a GitHub repo (input by the user) to be forked into the user’s account, and clicking on the BitBucket icon displays the number of issues present in a repository selected by the user.

Git Manager progress- in Windows

Here’s how the Git Manager Tool looks like at present in Windows.

Git Manager progress- in Linux

Here’s how the Git Manager Tool looks like at present in Ubuntu.

Advertisements

2 responses to “Git Manager”

  1. videoactif says :

    Wow, good luck with your project. It sounds really interesting.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: