VCS Interfaces, round 3

Matthew Woehlke mw_triad at users.sourceforge.net
Thu May 3 21:23:08 UTC 2007


Here are the latest incarnations of the VCS interfaces, now living in
trunk/KDE/kdevelop/lib/plugins/vcs/interfaces

Let's stick to Andreas' original discussion guidelines:

Andreas Pakulat wrote:
> I'd like to keep the discussion to a minimum, so here are the points
> that are allowed to be discussed ;)
> 
> * major problems for a given system with the proposed interface
> * return types for the methods, we need a way to communicate at least
>   errors back, but I'm not sure how to do that best given that the 
>   methods should execute asynchronously

This is mostly covered; we are using "VcsJob". We know approximately, 
but not exactly, what this will be. At the very least it will support a 
wait() method, and will be the container for completed() and failed() 
signals. Thus wait() and said signals have been removed from IBasicVC.

> * Parameters for push/pull in the distributed vcs iface, no idea whats
>   needed there

This still needs to be addressed. The good news is that there are no BC 
issues until a plugin is actually implementing it, so this isn't urgent. 
(Similar to how we expect individual plugins will create their own 
interfaces in addition to the shared ones, e.g. IAegisVersionControl.)

> * diff and log parameters, am not 100% sure there

...are much more refined now, but still open for comment.

> * usage of simple QString's for any parameter that can be a repository
>   url (anything that is always a local url should stay KUrl), if a VCS
>   system can't use a url for describing a repository location

Some of these might be wrong, if so, please point them out or fix them.

Additional Questions/Notes:

- Right now we have log()/showLog() in both IBasicVC (takes local paths) 
and IBrowsableVC (takes repo paths). Everyone OK with this? Note that 
the only difference between the two is the parameter type, which means 
(depending on how cleanly you've written your code, I guess :-)) casting 
may be needed to ensure the correct one is called.

- Are there VCS's that support log() but *not* ls() and/or cat()? If so 
we might need to do another interface split.

- Is it OK for diff() to ignore DiffUnified and return DiffRaw anyway in 
the case of binary files? We need to either do this, specify that diff() 
will ALWAYS return DiffRaw (but this is probably less efficient for 
VCS's that will retrieve a diff and need to then generate the second 
item by patching the first), or define a standard binary diff format.

- Better names for IAtomicBrowsableVC, VcsEvent, VcsItemEvent, VcsChange 
and change() will be happily entertained; I'm ok with those names but am 
not convinced they are ideal.

- Is VcsAction missing anything? Note that it is expected that many 
plugins will only support a subset of these.

-- 
Matthew
Disadvantage: Bad Puns [-5]
You constantly utter puns so egregious as to cause mental distress to 
anyone hearing them. This can, however, be used to distract enemies.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: iatomicbrowsingversioncontrol.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ibasicversioncontrolh.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0001.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ibranchingversioncontrol.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0002.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ibrowsableversioncontrol.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0003.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: idistributedversioncontrol.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0004.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: irepositoryversioncontrol.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0005.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: vcshelpers.h
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20070503/caab222e/attachment-0006.h>


More information about the KDevelop-devel mailing list