GeditSCMPlugin

Revision 1 as of 2006-06-03 00:32:26

Clear message

Summary

This spec describes a plugin for [www.gnome.org/projects/gedit/ Gedit] that will implement a generic source control management interface to specific SCM tools.

Rationale

[www.gnome.org/projects/gedit/ Gedit's] new plugin framework has opened up a world of possibilities for programmers interested in leveraging the popular editor's simplicity, power and ubiquity. Many developers, myself included, would prefer to program primarily in [www.gnome.org/projects/gedit/ Gedit] when working in a graphical environment, but are often forced to drop to the command line when managing source code. It is for this reason that I propose to implement a plugin for [www.gnome.org/projects/gedit/ Gedit] that makes source control simple and painless.

Use cases

Juliet is working on a versioned file and saves her work. She plans on committing her changes, as she's just completed a substantive feature. Instead of dropping to the command line and committing her specific file, she merely presses the 'Commit' button on the toolbar, summarizes her changes in the prompt presented to her and begins working on the next feature. The file she has saved is, meanwhile, committed to whatever repository it belongs to using the appropriate SCM utility (either her default or a separate tool).

Scope

This plugin will include the following functionality:

  • Abstraction of a generic SCM interface for common actions (commit, update, diff, etc.)
  • An interface for more specific plugins to act as backends for the actions delineated above
  • At least one example of such a backend plugin (initially a [http://bazaar-vcs.org/ Bazaar-ng] client, with other common SCMs to follow as time permits)

Design

The plugin will provide a generic framework which encompasses the basic, common functionality of most SCMs (with each backend capable of extending the general model). A configuration dialog is provided per-document -- with sensible universal defaults, of course -- that will allow developers to choose which VCS they'd prefer to use on a per-document basis. The framework will be written in such a way that, should a user desire an interface to an SCM that is not currently implemented, they need merely provide a small script exposing said SCM's functionality to this generic interface. The initial backend will use the [http://bazaar-vcs.org/ Bazaar-ng] SCM. Any operations requiring user interactions

Implementation

The plugin will be programmed in [http://python.org Python] and utilize [www.gnome.org/projects/gedit/ Gedit's] native plugin API.

Code

Data preservation and migration

Outstanding issues

BoF agenda and discussion


CategorySpec CategorySpec CategorySpec