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