Patch for preliminary Mercurial integration in kdevplatform

Evgeniy Ivanov pfx.kde at gmail.com
Tue Mar 10 16:48:42 UTC 2009


Hello,

Sorry, until Weekends I will not be able to review patches and commit.
Maybe someone else could do it.

On Mon March 9 2009 11:07:22 Fabian Wiesel wrote:
> Hello,
>
> First, DVCSjob is changed from parsing the output for lines and later
> rejoining them to a single string to simply accumulating a QByteArray.
> This allows the external program to output binary data.
> The old DVCSjob::output() casts the binary output into a QString,
> a new DVCSjob::rawOutput() function provides access to the raw
> QByteArray.
>
> IDVCSexecutor::parseOutput() has been changed to accept a QByteArray for
> the same reason.

Should be fine.

> DistributedVersionControlPlugin now forwards log(), push() and pull()
> calls to the IDVCSexecutor.
> The push() and pull() signatures have been
>  changed to the same as DistributedVersionControlPlugin. The
>  VcsLocation is left empty, as I have no idea, where one has to
>  get this option. In case of mercurial (and AFAIK git, too) it is
>  possible to store a default-push/pull location. One has to manually
>  configure it, and then push/pull works, provided there are no
>  conflicts.

A dialog can be shown. But it's fine IMHO.

> Now to some questions/remarks:
>
> Is it a good idea to have a generic "Version Control" context-menu
> item and a separate one? I find it somewhat unintuitive. I'd suggest to
> have a separate menu for each VCS. This way, one can easily use two
> different VCS in one project (E.g Locally Mercurial, Remote SVN)

There was some discussion in the mailing list at the end of summer / begin of 
autumn. Main reason was to unify menu items (see VcsCommonPlugin).
I don't like it much, but maybe it's correct for current plugins.

> Why is there the need for IDVCSexecutor? It mainly seems to
> duplicate the interface of DistributedVersionControlPlugin.

Not at all: it is like a proxy used by DistributedVersionControlPlugin, so you 
don't have to use dialogs, etc in the DVCS plugins directly, you just have to 
implement their functionality.

> What does VcsLocation provide over KUrl?
> From a Mercurial point-of-view (and git, too) the location of the
> repository is simply an url: http-static://server/path,
> git://user:password@server/path, svn://server/trunk/stuff/
> In Mercurial employing KUrl as a repository
> location would mean simply passing KUrl::pathOrUrl() to the programm.

Not sure I understood. KUrl is the only proper way to provide path/url. Any 
path/url in the interface must be KUrl. Executors should use it too, but it 
was my mistake to use QString there.

-- 
Best regards, Evgeniy.
Key Fingerprint: F316B5A1F6D2054FCD18B74A95400ABB1FE567A3

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20090310/e7c101f7/attachment.sig>


More information about the KDevelop-devel mailing list