, KIO, kdesvn

Description
As of version 0.7.0 of kdesvn it comes with some modules integrating some commands directly into menus.
KIO protocols 	Implements handlers for the following protocols:
ksvn+http
ksvn+https
ksvn+file
ksvn+ssh
ksvn
These protocols are designed only for repositories, not for working copies. For example, ksvn+file:///path must point to the beginning of a repository different to the application itself or KPart. Working copies may browsed with .
For browsing at a specific revision you may append the query ?rev=revision to the .
Context menus 	 kdesvn installs context menus for . Them may be seen with right mouse click in the browser window (only in standard view, not any KPart) so it is possible to do most used actions direct from within (or any other file managers that read context menus like ). This is done via a call to the command line variant of kdesvn.

Usage of KIO outside - an example
Every application which uses the KIO library may use these protocols. So it would be possible to retrieve all differences between two revisions with without any deep knowledge.

Retrieving differences between revisions using and KIO::ksvn

kdiff3 \
  ksvn://anonsvn.kde.org/home/kde/trunk/KDE/arts?rev=423127 \
  ksvn://anonsvn.kde.org/home/kde/trunk/KDE/arts?rev=455064

Let print all differences between two revisions.
Using this within kdesvn (diff'ing two revisions) is MUCH faster because the internal mechanisms of subversion are used.

Programmers information about KIO::ksvn
You may skip this if not interested in KIO programming.
KIO::ksvn::special knows the following operations.

Command list

Command overview for KIO::ksvn::special
Command name	Numeric id	Parameter list	Implemented in the current version?
Checkout	1	KURL repository, KURL target, int revnumber, QString revkind The target will not be modified, ⪚, but the content will be checked out without creating a subfolder! For example, the source may be http://server/repos/project/trunk, target /home/user/proj/ then the contents of trunk will copied into /home/user/proj/ not /home/user/proj/trunk/!	Yes
Update	2	KURL url, int revnum, QString revstring If revnum < 0 the revstring is parsed. Format of revstring is described in Appendix.	Yes
Commit	3	KURL::List urls urls is a list of local urls to commit. Will ask for log message.	Yes
Log	4	int startrevnumber, QString startrevstring, int endrevnumber, QString endrevstring, KURL::List Use this with care - this may produce a lot of data.	Yes
Import	5	KURL targetrepository, KURL sourcepath	Yes
Add	6	KURL	Yes
Del	7	KURL::List	Yes
Revert	8	KURL::List Revert in KIO is always non-recursive, no questions (calling app must do it itself)	Yes
Status	9	KURL item, bool checkRepos, bool recurse item - the item whos info should be checked, checkRepos - check if there are newer versions in the repository, recurse - whether to check recursive or not.	Yes
Mkdir	10	KURL::List	Yes
Resolve	11	KURL, bool recursive	Yes
Switch	12	KURL working_copy_path, KURL new_repository_url, bool recursive,int revnumber, QString revkind	Yes
Diff	13	URL uri1, KURL uri2, int r1, QString rstring1, int r2, QString rstring 2, bool recursive For difference between repository file:/// and working copy setup working copy urls without a protocol!	Yes

Return values
Return values may be given via metadata, see apidoc for details.

Content of metadata
Key	Possible value
path	Path of the item action was made on, ⪚ given url
action	Numeric action type
kind	kind of item (mostly folder or file)
mime_t	Subversion mimetype of item
content	State of content (subversion value)
prop	State of properties (subversion value)
rev	Resulting revision or revision worked on
string	Internal defined human readable message.
loggedaction	Subversion defined action string on item (A,M,D)
loggedcopyfrompath	If copied from which path? (may be empty)
loggedcopyfromrevision	If copied at which revision? (may be < 0)
loggedpath	On which single path the entries logged action and so on are set. (path is set to the calling url)
diffresult	a line of difference output