On 09.04.2010 21:07, Greg Stein wrote:
On Fri, Apr 9, 2010 at 13:49, Stefan Küng<tortoise...@gmail.com>  wrote:
...
Going through the code of TSVN, I found a few places where we use functions
defined in svn_wc.h:

Ooh! Thanks!

* svn_wc_adm_probe_open3, used to get the svn_wc_adm_access_t required for
svn_client_uuid_from_path()

Looks like we have an access-baton-free replacement
(svn_client_uuid_from_path2).

Great! I was wondering why an svn_client_ function would need an access baton anyway.


* svn_wc_translated_file2
* svn_wc_prop_list
* svn_wc_is_adm_dir

These should be fine.

* svn_wc_dup_status2

I think we're going to be revamping the status structure pretty hard. It may

I'm aware that the status functions and structures will change a lot.

* svn_wc_get_pristine_copy_path (we don't use svn_wc_get_pristine_contents
because that returns a stream, and we need a file)

Ugh. This one is particularly problematic.

Can I ask what you use it for, so that we can come up with a suitable
replacement?

We use it to get the pristine file when we do diffs WC->BASE. For example, users can doubleclick on modified files in most dialogs (especially the commit dialog) to show the diff before committing.

I know that there's svn_wc_get_pristine_contents which we should use instead, but we need a file, not a stream to work with (the file is needed because we start another app to do the diff). Sure, we could use the stream and save that ourselves to a file instead, but that's what svn_wc_get_pristine_copy_path already does, so we still use that api.


* svn_wc_set_adm_dir

Set? Is this for when you detect a working copy that uses _svn ?

This is needed. Check the svn main.c file (for 1.6.x at least). There's this in there:

#if defined(WIN32) || defined(__CYGWIN__)
  /* Set the working copy administrative directory name. */
  if (getenv("SVN_ASP_DOT_NET_HACK"))
    {
      err = svn_wc_set_adm_dir("_svn", pool);
      if (err)
        return svn_cmdline_handle_exit_error(err, pool, "svn: ");
    }
#endif

So if the command line client has to initialize this, we have to do it too.
From what I remember, this was done (back in the days) so that clients could use something else than _svn if they wanted to. The env variable doesn't set the value but only has to be present.

Stefan

--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

Reply via email to