Log Message: |
Provide a path-based counterpart to svn_fs_base__id_compare.
Most code can now compare nodes directly (next commit) using
fewer LOCs and being faster for non-BDB repositories.
It also introduces improvements over the id-based API: An enum
replaces the various magic return values and nodes from different
repositories are reported as "unrelated" instead of yielding an
undefined result.
* subversion/include/svn_fs.h
(svn_fs_node_relation_t,
svn_fs_node_relation): Declare the new API.
* subversion/libsvn_fs/fs-loader.h
(root_vtable_t): Add the corresponding vtable entry.
* subversion/libsvn_fs/fs-loader.c
(svn_fs_node_relation): Implement as forwarding to the FS vtable.
* subversion/libsvn_fs_base/tree.c
(base_node_relation): Naive implementation of the new API;
basically what the users did in the past.
(root_vtable): Update.
* subversion/libsvn_fs_fs/tree.c
(fs_node_relation): Optimized code based on fs_node_id() and
svn_fs_fs__id_compare() using as few object
copies as possible. Since all logic is in
one place now, it will be easier to refine
in the future.
(root_vtable): Update.
* subversion/libsvn_fs_x/tree.c
(x_node_relation): Implement similarly to FSFS.
(root_vtable): Update.
|