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

Reply via email to