UI-Idea for KDev4: Working-File-Baskets

David Nolden david.nolden at art-master.de
Wed May 2 22:59:28 UTC 2007


Hi! Just while following all your discussion around VCS, I was thinking about 
what would be necessary for me to use a subversion-plugin in KDevelop, and I 
think the main problem is the missing overview, especially when you have 
files spread over multiple folders.

Think about his case:
I've changed lib/cppparser/parser.cpp, lib/cppparser/parser.h, and 
languages/cpp/cppcodecompletion.cpp.

I want to commit those changes comfortable using the GUI, before that I want 
to review them with kompare, and I do NOT want to be confused by the changes 
I did to any other files in the project.

How can I do this comfortably from the user-interface?

Here's my Idea that would help about this:

Let's call it "Working-File-Baskets":
A basket would be an arbitrary set of files or virtual files, that could be 
managed by drag & drop. On these baskets it would be possible to do all the 
operations you can do in the file-tree, including VCS-stuff, as well as 
additional special-operations according to the basket-type.
The user-interface would get a new basket-part that should by default be 
placed near to the file-tree, and that would contain an arbitrary count of 
baskets by using tabs. Additionally it would contain a button "create basket" 
that could be used to create a new empty basket.

Use-cases:

-- Normal kdevelop-usage:
Baskets could be used to keep track of different construction-sites within a 
project. When you start working on something new, you could create a new 
basket, and drag the files in whenever you get them involved. When you work 
on someting else, you would continue working in the other basket.
Later when you're ready, you can right-click in the basket and see the 
difference using version-control to review your changes to these files, then 
check them in, etc. all without getting confused by changes to other, not 
involved files.

-- Version-control:
In the simplest case, baskets could be used to select all files you want to 
commit. Simply drag those files into the basket, and then commit the basket.

But it's getting even cooler:
Since in the end it would be nice if diffs could be shown directly within 
KDevelop, and in the teamwork-plugin I already do it partially using 
libdiff2, a way will be needed to enumerate all files that have changes, so 
the changes can be further investigated and eventually committed. We could 
easily implement a "Show changed files in basket"-feature, that would create 
a special basket containing all changed files. Then you could click on the 
files to see their content and the changes within them marked. You could 
remove single files out of the basket that you do not want to commit, and 
then commit the basket.

-- Teamwork:
For file-collaboration I currently handle the files collaborated on within the 
tree-view I show the peer users in. With baskets it could be done better, the 
basket could be a way of managing the files collaborated on. You could for 
example right-click in a basket, and choose a menu-entry "Collaborate on this 
basket with ..." to start a collaboration-session. Then you could control 
what files are collaborated on by dragging in or removing files. When you're 
invited to a file-collaboration session, the teamwork-plugin could 
automatically add a new basket that contains all files of the 
collaboration-session, so they can be easily accessed.

There's probably many other possible use-cases of such baskets, the important 
thing would be that they'd become a well integrated part of kdevelop, 
comparable with a mask in gimp.

Sorry for the long text, but what do you all think about the Idea?

greetings, David




More information about the KDevelop-devel mailing list