Saturday, December 12, 2009

Version Control Support

Before a feature is added in Dolphin, it is checked whether the feature is mandatory for Dolphin’s target user group. If this is not the case, it does not mean that the feature cannot be added; first it must be clarified whether the feature might be non-intrusive and adds a value for users outside the primary target user group. Non-intrusive is mainly related to the user interface. A feature that adds a lot of clutter to the main menu, context menus or toolbar might harm the target user group. In this case the feature will not be added.

A good example of a feature that is non-intrusive is the embedded terminal in Dolphin. It only requires one entry inside a sub menu, but adds great value for a lot of people that are not in the scope of Dolphin’s target user group.

Another kind of non-intrusive feature will be available for Dolphin in KDE SC 4.4: version control support. In KDE 4.4 at least a plugin for Subversion is given:


The version state emblems and additional entries in the context menu will only be shown if a directory is under version control, so this feature fulfills the requirements for being non-intrusive. The plugin still has a lot of rough edges and has mainly been written for testing the plugin interface. Still I use it regularly and it fulfills most of my needs.

It is possible for developers to write other version control plugins for Git, Mercurial or whatever, just by following the instructions given in the plugin interface. In KDE SC 4.5 it is planned to embed the plugins as part of the kdevplatform package, but this has not been finally decided yet. The benefit to offer the plugins as part of kdevplatform will be, that the existing infrastructure for version control integration can be reused by the plugins.

Big thanks go to Nuno Pinheiro, who created icons for the version control states!

27 comments:

Anonymous said...

It would be cool if this feature could be used for dropbox integration
(dropbox.com)

Niko Sams said...

Very Cool!

Are those overlay icons from svn status?

The User said...

I hope the plugins will be integrated into kdevplatform. Then they would be available in KDevelop and Quanta. :)

Hans said...

Interesting. Are the emblems hardcoded or is it a new feature of Dolphin?

Anonymous said...

We can prepare now any plugin for Dolphin? I think about backup tool...

Anonymous said...

great work, thank you !!
hope to see git too (i've started to use it few days ago and it really rocks)

rahman said...

Well, it was great to use TortoiseSVN on windows while we were developing for windows. It's very good to see similar functionality for Dolphin.

I am using recent kde trunk and having dificulties with this feature. How Dolphin handles authentication to private repos? It seems it doesn't handle it at all. When I browse a svn folder with dolphin an openSSH dialog (which doesn't belong to Dolphin) keeps asking my ssh private key continuously. Don't know if something wrong about my setup. But it would be good if Dolphin keeps username and password via KWallet system for non-anonymous repos.

And I can't find I way to disable verison controlind in Dolphin options, isn't there any? I want to disable it until there is a fix for authentication issue as it sucks to have to see these openssh password dialog.

Anonymous said...

Wait .. so Dolphin has a general plugin system now?
Or is it only for version control systems?

Peter Penz said...

@Niko and Hans: The emblems/overlay icons are version control specific and represent the SVN status in this case. Additionally the text color gets tinted too.

@anonymous #1 + #2:
> We can prepare now any plugin for
> Dolphin? I think about backup tool...

The plugin interface is version control specific and no "generic plugin" interface for Dolphin.

@rahman: I did not face your issues yet, but have just committed code that allows to disable the plugins. It is too late already for providing a GUI for this (string freeze -> must be postponed to KDE SC 4.5), but you can disable it by modifying your dolphinrc file. Just add:
[VersionControl]
disabledPlugins=Subversion
If you face any issues, it would be great if you could submit a report on bugs.kde.org. Thanks in advance!

Anonymous said...

That's something I'm waiting for since a long time! Really great that is coming to linux finally.

On a side note: Kdevelop4 has improved a LOT! Code Completion, full CMake support, and and and

All really cool pieces of work!

Thanks!

Grósz said...

I don't understand why a new plugin interface was needed for this. Svn actions already show up in the popup menus in both Konqueror and Dolphin if kdesvn is installed. The only difference is that in Dolphin they don't show up if you click on an empty space in a directory; in Konqueror they do sine the popup menu of the empty space is that of the current directory.

Peter Penz said...

@Grósz: The "popup SVN actions" don't give an indication about the revision state of the files (please have a look at the text colors and emblems in the screenshot). Also those "popup SVN actions" have only a very limited control regarding the context and when they get enabled/disabled/shown/hidden.

Pinheiro said...

You rock looks great, not to much on your face and still very easy to understand :) IMO.

Grósz said...

Thanks for the answer, it looks great indeed.

Naproxeno said...

I'm curious. Why a version control specific plugin system and not a generic plugin one?

Federico Cáceres said...

I love this feature!

Can't wait to try out Kde 4.4, thanks!

chani said...

awesome! :) :)

tortoiseSVN was the one thing I missed from windows...

Bruno said...

awesome feature, thanks!

Peter Penz said...

@Naproxeno:
> I'm curious. Why a version
> control specific plugin system
> and not a generic plugin one?

The plugin system is a generic plugin system, the default KDE plugin system is used.

@all: Please be aware that the SVN plugin implementation is far, far away from the functionality offered by TortoiseSVN. But nothing prevents us conceptually to invest some work and close the gap: The SVN plugin implementation "just" needs some love ;-)

Naproxeno said...

@Peter Penz: Thanks for your answer and I'm very happy to see this. Although it's no TortoiseSVN yet it's just a matter of time and effort now.

The User said...

Well, what's about KDevPlatform?

Pablete said...

Hi, I'm using KDE 4.4.
I have a problem: I use a svn repository with svn+ssh authentication.
The problem is that every time I access a folder inside my repository, a windows asks me for a password. The window is called "OpenSSH Authentication".

I would like to disable this feature.
Is it possible?

Thanks a lot.

water outbreaks said...

Oh, dear lord this sucks. I mean, great idea, bad implementation. This should not be enabled by default and/or there should be a gui setting to disable the plugins.

Took me a while to figure out where f*$K the ssh login dialogue was coming from. Local files/ remote svn over ssh server. It prompts for the password every time I browse to a directory that's controlled by subversion. But not immediately. So I'd browse to a directory do something else, notice the password prompt ( not tied to dolphin) hit cancel, only to have it pop right back up.

Nic said...

I have the same problem (Dolphin 1.4, KDE 4.4.1). The entry to .dolphinrc didn't help. In which version was it introduced?

Nic said...

If it helps, I am connecting to the svn repository via ssh tunneling

Giulio said...

Hi Peter! Same problem for me. Dolphin opens kwallet that ask for master password in order to access svn repo. This plugin is a great feature but this problem make me crazy. Before a patch for this problem we cannot use it.

[VersionControl]
disabledPlugins=Subversion

It works well for me and disable svn on dolphin, subversion support dolphin disable, howto disable dolphin svn support, dolphin kwallet password for svn, disable svn subversion dolphin.
Some keys to allow users to come here quickly.

Anonymous said...

Same issue here with svn+ssh repositories as well. Especially annoying is the fact that it keeps trying again in very short intervals, and you don't have the slightest idea where all these windows come from.
I don't get how this feature can be called "non-intrusive". This is very intrusive if you are e.g. travelling and temporarily can not access the repository (or simply don't want at the moment). Also automatic update from the repository (if that really happens) is a big problem: There are many cases where one does not want to update. This must not be done automatically. Please don't get me wrong: SVN support in context menu is a great feature, but the way it is implemented makes dolphin unusable for me.