[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

functions that would help TSVN

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Sun, 27 Feb 2011 09:39:42 +0100

Hi,

When I was in London, Hyrum asked me to assemble a list with
issues/tasks/functions that would help TSVN. So here it is:

new proplist function (svn_client_proplist4) where I can specify a
filter/search string. Because right now, the proplist function returns
all properties it finds (with depth infinity also for all paths). While
this is a lot faster now than in 1.6, it still takes a few seconds for
average sized working copies. Analyzing the bottlenecks I found that
most time is spent allocating memory for all the returned data.
With a filter string I could specify just a property name and get only
those properties/paths back that have that specific property set, which
would reduce the memory allocations a *lot* and therefore be much
faster. Best would be if I could specify not just one property to be
searched for but several, that way I could ask for e.g. all "bugtraq:"
properties we (and several other svn clients) use for integrating with
issue trackers.

*******************

function to determine whether a path is part of a working copy.
Currently I'm misusing svn_wc_check_wc2() for this, but I'd rather have
a proper and fast svn_client_is_workingcopy(const char* path) function
for this.

*******************

function to find the wc root path for a given path. I thought there must
be such a function already but I couldn't find one.

*******************

saved auth data
Currently if the user want to have the auth data saved, it is saved in
subversion\auth\svn.simple (or another subfolder). But it is saved with
the auth realm string. Of course that's the right way to do it, but I
would like to have other info saved as well, like the repo root url
and/or the repository uuid. And then some APIs that allow me to list the
saved auth data, delete a specific file, retrieve the login username
(not the password, for obvious reasons).

Use cases: users often want to login with a different username for a
repository because they're using someone elses workstation/laptop for a
day or two or they use a shared workstation but still want each commit
assigned to the correct user (ugly, but happens more often than you
might think). Right now there's no way to find out which saved auth file
corresponds to a specific repository. So either users have to delete all
the saved auth data for all repositories, or open each file in a text
editor and then guess from the realm string which is the right file.
If the repo root url was saved as well, I could do this in TSVN and show
the user a list of repositories and have him chose the one to clear the
auth data for.

Another use case: retrieving the saved username would be useful for e.g.
the integration with issue trackers. Usually the username is the same
for the repository and the issue tracker (most setups work that way).
Currently there's no way to filter the list of issues by username
automatically for the issue tracker plugins because a username is not
available. Using the repo root url or repo uuid which can be read from a
working copy, I could then read out the saved username and provide that
to the issue tracker plugins so they can filter for this username by
default and reduce the list of open issues to that user.

*******************

function to retrieve the highest "last commit revision" of a whole
working copy. Currently I'm using the status function to find that
information. But all that's needed for such a function would be a db
query with a simple comparison in the callback. That would be a lot faster.

*******************

A new field in the svn_client_status_t struct which has the size of the
file in the working copy, or -1 if not known. For most file this
information should be available automatically since svn_client_status
has to do a stat() call on the file anyway to determine its file time or
at least when comparing the size to its BASE. So if that information is
available, I'd like to reuse that info and not have to do a stat() call
again later, basically doubling the stat() calls and therefore hurting
the performance a lot.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
Received on 2011-02-27 09:40:27 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.