As written some time ago to this list, I'd like to contribute to
nautilus-vcs. My semester brake is staring next week implies i'll have
the time to proceed with things i started.

The current implementation of nautilus-vcs is simple not abstracted. Its
bound to CVS. So i though about a new interface.

I see two different approaches to specify the interface:

A1: Every specific VCS implementation (SVN, CVS) basically does
everything by itself i.e is a separate nautilus extension.
Exlicit: There is a NautilusVcs object wich, called by nautilus,
delivers all avail. extension to it (implementes the ExtensionsTypes
interface). There is a NautilusSvn, NautilusCvs, ... object wich
implements all sorts of providers nautilus extensions may provide. This
implies there is e.g. a separate PropertiesDialog for each vcs.

* flexible (since every vcs basically may do anything it wants)
* bad to handle if a file is owned by more than one vcs. It would be
hard then to add canonical context menu entries or property pages.

A2: The "extension part" is done by NautilusVcs with an internal VCS
Explicit: There is a NautilusVcs object wich implements
NautilusExtensionTypes and all relevant providers nautilus provides.
There is a NautilusSvn, NautilusCvs, ... object which implements a
INautilusVcs interface defining all function and properties NautilusVcs
needs to satisfy nautilus' needs. E.g. if NautilusVcs is asked for menu
entries, it asks all its own "extensions" to pass entries and
returns/alters them to nautilus.

* handling of file owned by more then one vcs would be easy and could be
decided by NautilusVcs.
* There is no need for multiple property pages.
* Possible vcs action abstarction
* good abstraction possibilities on the specialized vcs' side (may be
also possible with A1).
* NautilusVcs may eventually (not sure) know some more things about its
extensions apart from there availability.

I personally like A2 but i know that Dave likes A1 (at least he did half
a year ago :)).

General: We need to do some thoughts about files owned by multiple vcs:
Shall there be one property page per vcs or one wich summarizes them
How do we name vcs action in context menus? You can't place two times
"Commit" there... Do we prefix the vcs name ("Subversion Commit")?


Raffaele Sandrini <rasa gmx ch>

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]