[[[
Replace svn_path_join() since there are conflicting definitions of a
path.
* 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 Näslund <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.
/Daniel
Received on 2009-11-06 19:40:22 CET