On the sqlite-mergeinfo-without-mergeinfo branch:
[Note: I think this branch may be a dead end, but I will be porting
part of this revision to the sqlite-deep-copies branch.]
Implement svn_fs_get_mergeinfo_for_tree using new in-FS metadata
instead of sqlite. Tests don't all pass, because file-not-found
errors are thrown; I believe this is because higher-level code is
written to incorrectly mask errors, not because of bugs in this code
(but who knows!).
Pool usage may be poor; this is noted (cryptically) as /* XXXdsg go
swimming */.
* subversion/libsvn_fs_fs/tree.c
(get_mergeinfo_hash_for_path): Don't mask file-not-found errors.
(crawl_directory_dag_for_mergeinfo): New helper, which walks the FS,
only looking at nodes that actually have mergeinfo (which can be
efficiently found based on the new tags), and merges the mergeinfo
into a single hash.
(get_mergeinfo_hash_for_tree): The core of the
svn_fs_get_mergeinfo_for_tree implementation, which uses the above
helper.
(fs_get_mergeinfo_for_tree): Use the above helpers instead of a
blatantly incorrect query.
* subversion/libsvn_fs_fs/dag.h
* subversion/libsvn_fs_fs/dag.c
(svn_fs_fs__dag_has_descendents_with_mergeinfo): New helper
function.
* subversion/libsvn_repos/log.c
(get_combined_mergeinfo): When querying the previous revision, only
query mergeinfo for paths that exist in the previous revision.
git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/sqlite-mergeinfo-without-mergeinfo@868268 13f79535-47bb-0310-9956-ffa450edef68
4 files changed