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