Following up on r1101473 (and several other followups), resolve the regression in our issue #1663 handling, by moving the special recorded information handling exception in the revert code itself.
The revert code already stats the file, so we can just make it retrieve the information it needs directly. This also allows removing two optional output arguments from svn_wc__internal_file_modified_p that were only used by the revert code.
* subversion/libsvn_wc/adm_ops.c (includes): Add private/svn_io_private.h (revert_restore): Extend our own stat to also retrieve size, mtime, read only and executable. Compare against the recorded information locally before calling svn_wc__internal_file_modified_p in the slow exact mode. Stop assuming that all symlinks should always be reverted on systems that don't support symlinks. (svn_wc__internal_remove_from_revision_control): Update caller.
* subversion/libsvn_wc/cleanup.c (repair_timestamps): Update caller. Handle symlink as file.
* subversion/tests/cmdline/revert_tests.py (revert_reexpand_keyword): Remove XFail. Assert that the first part of the test succeeds, but that we don't revert the file after we fixed the recorded information.