When hunting for a wcroot through a symlink that points to a directory, and a WC is found in a parent directory of the symlink, ignore non-conflicted not-present or excluded nodes that overlap with the symlink.
This allows unversioned symlinks to redirect the wcroot search even if 'invisible' nodes exist at the symlink's location in the parent WC.
The benefit of this hack is coherent behaviour for unversioned symlinks pointing to externals, at least from the user's point of view. Before this change, Subversion would error out with "path not found" if an unversioned symlink was obstructing a, for instance, not-present node, and this error magically disappeared after an update which removed the not-present node.
Now, Subversion prefers using the external's wcroot unless there is something important to show for the node corresponding to the symlink in the parent WC. It is somewhat unfortunate that the decision about what is important is made at a very low layer within the guts of libsvn_wc. But I saw no better way of working around this. This hack will become unnecessary once externals are moved into the parent's wc.db.
* subversion/libsvn_wc/wc_db_wcroot.c (svn_wc__db_wcroot_parse_local_abspath): Ignore non-conflicted not-present or excluded nodes beneath symlinks pointing at directories, for reasons described above.