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

[PATCH] Replace svn_path_join() in libsvn_client/mergeinfo.c

From: Daniel Näslund <daniel_at_longitudo.com>
Date: Fri, 6 Nov 2009 19:39:28 +0100

Replace svn_path_join() since there are conflicting definitions of a

* subversion/libsvn_client/mergeinfo.c
  (svn_client__adjust_mergeinfo_source_paths): Replace svn_path_join()
    with svn_dirent_join(). The base is a key in svn_mergeinfo_t.
  (svn_client__get_wc_mergeinfo): Replace svn_path_join() with
    svn_relpath_join(). The base is created with svn_dirent_basename()
    that returns a relative path.
  (svn_client_mergeinfo_get_merged): Replace svn_path_join() with
    svn_uri_join(). We want to create full urls of svn_mergeinfo_t keys.

Patch by: Daniel Nslund <daniel_at_longitudo.com>

Some background: In subversion/include/svn_mergeinfo.h svn_mergeinfo_t
is just a typedef for a apr_hash_t. The keys are described like this:

 * (c) @c svn_mergeinfo_t, called "mergeinfo". A hash mapping merge
 * source paths (@c const char *, starting with slashes) to
 * non-empty rangelist arrays. A @c NULL hash is used to represent
 * no mergeinfo and an empty hash is used to represent empty
 * mergeinfo.

I'm assuming that means a dirent.

If the keys in svn_mergeinfo_t is a dirent then in
svn_client_mergeinfo_get_merged() we create an url from a dirent.

svn_dirent_uri.h says:

 * When translating between local paths (dirents) and uris code should
 * always go via the relative path format.
 * E.g.
 * - by truncating a parent portion from a path with svn_*_skip_ancestor(),
 * - or by converting portions to basenames and then joining to existing paths.

But in svn_wc__node_get_base_rev() we just skip the leading '/' in the
join. It's shorter and easier to understand than using
svn_dirent_skip_ancestor() and svn_dirent_basename. So I let it stay
that way.


Received on 2009-11-06 19:40:22 CET

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