Git Plugin Proposal

Reasoning

The old git plugin is based on the git command line utility which has no stable output format and and is quite slow to invoke. In the meantime libgit2 exists which allows direct access to the repository. There is even a gobject-based wrapper libgit2-glib. With this in mind in makes sense to rethink Git integration in Anjuta.

Features

Git has a really big feature list and we cannot support each an every feature. However it might be wise to limit the plugin to the most frequently used features and those where integration in an IDE makes sense:

Basic features (planned for initial version):

  • Add/Remove(/Move)
  • Commit / Status
  • Browse log (with integrated diff and cherry-pick)
  • Branches: Add / Remove / Switch
  • Remotes: Push / Pull / Rebase
  • Tag: Add / Remove (signed + unsigned)

Advanced features:

  • Remotes: Add / Remove
  • Branches: Merge
  • Interactive diff in editor (show annotation for added/removed/changed lines)
  • Interactive rebase (e.g. git rebase -i)
  • Stash

User interface

The user interface should be as simple as possible and especially being context-senstive. E.g. everytime the git command line utility will give you advices like "Cannot rebase - you have unstashed changes", disable the Rebase button so that this cannot even happen.

Some user interface ideas can be seen below:

Apps/Anjuta/Roadmap/GitPlugin (last edited 2013-11-26 17:20:31 by WilliamJonMcCann)