Gsoc: KDevelop Git Integration

Christos Margiolas chrmargiolas at
Sun Mar 28 14:18:24 BST 2010


My name is Christos Margiolas I am a computer science undergraduate
student (University of Crete, Greece) and I have good experience with
c/c++, qt and kde.

Some years now git has gained a strong group of supporters, because of
its flexibility, efficiency and distributed philosophy. Many
communities have migrated to it and KDE is going to do the same  soon.
For this reason I  think it is useful to have git support in kdevelop,
so I decided to write on the list a proposal for git integration in
kdevelop, which will help many users. I have to say the idea on kde
wiki about community tools integration motivates me strongly to write
this proposal for gsoc.

In the bounds of a summer project I think a realistic goal is the
support of the bellow git operations:
I tried to select the most important operations for this proposal, if
you disagree for some choice or want to see an other let me know.

*local level commands
init (used either in the new project creation or by project managet
for "versioning orphan" projects)
log (graphical view of the log info)
commit (commit changes to git)
add (add new file/directories)
tag manipulation (tag creation/remove)

*branch manipulation commands
branch manipulation(create/destroy branchs)
merging(merge branches)
branch selection(checkout)

*patching operations
git diff

*distributed operations
git clone (import a project from a git url)

Now, lets say a few thing about the implementation.
My thought is to write a kdevelop plugin for git. Of course this will
be based on the vcs code already exists in the trunk tree. In the tree
there are interface virtual classes for the different kind of vcs
tools, the IDistributedVersionControl as I can see supports the
majority of the operations that I propose here. Using the
IDistributedVersionControl interface the work at the gui side becomes
smaller because many  widgets already exist, but this doesn't mean
that they are capable for every git operation(ex merge support).

In trunk  there is an effort called dvcs for a plugin dedicated to
distributed systems from where a possible git plugin should be
derived. At the same time a git plugin is in the playground but I
think it's in starter state. My opinion is the development of a single
plugin because dvcs is already very specialized to git.

An important issue is the support from a library for  git operations,
until now there is many possible solutions as libgit2(uncomplete) and
libqtgit(new project) but noone is able to accomplish the job for now,
so I intend to support git operations based on the work in the KDE
svn,the command tools and with reference to git source code and mayby
in communication with other project as libqtgit.

Thanks for your time, I am waiting for your comments about the idea
and its burden.


More information about the KDevelop mailing list