Added an option to 'svnadmin verify' to check Unicode normalisation of
repository paths, and collisions of names within the same directory
that differ only in character representation.

* subversion/include/svn_repos.h (svn_repos_notify_warning_t):
   New constants 'svn_repos_notify_warning_denormalized_name'
   and 'svn_repos_notify_warning_name_collision'.
  (svn_repos_verify_fs3): Added 'check_ucs_norm' argument and
   updated the docstring.
  (svn_repos_verify_fs2): Updated the docstring.

* subversion/libsvn_repos/dump.c (struct edit_baton):
   New member 'check_ucs_norm'.
  (struct dir_baton): New member 'check_name_collision'.
  (make_dir_baton): Initialise 'check_name_collision'.
  (check_ucs_normalization): New private function.
  (add_directory, add_file): Set 'check_name_collision' and call
   check_ucs_normalization if a new entry appeared in the directory.
  (get_dump_editor): New argument 'check_ucs_norm'; used to initialise
   the associated field in 'struct edit_baton'.
  (svn_repos_dump_fs3): Update call to get_dump_editor.
  (struct check_name_baton) New.
  (check_name_collision) New hash iterator.
  (verify_close_directory): Optionally call check_name_collision.
  (verify_one_revision): New argument 'check_ucs_norm'.
   Pass it to get_dump_editor.
  (svn_repos_verify_fs3): Update signature and pass 'check_ucs_norm'
   to verify_one_revision.

* subversion/libsvn_repos/deprecated.c (svn_repos_verify_fs2):
   Updated the call to svn_repos_verify_fs3.

* subversion/include/private/svn_utf_private.h (svn_utf__normalize):
   New function. Normalizes a string to Unicode NFC.
* subversion/libsvn_subr/utf8proc.c (svn_utf__normalize): Implement.

* subversion/svnadmin/svnadmin.c (svnadmin__cmdline_options_t, options_table):
   New option 'svnadmin__check_ucs_normalization'.
  (cmd_table): Add 'svnadmin__check_ucs_normalization' to "verify".
  (struct svnadmin_opt_state): New member 'check_ucs_norm'.
  (sub_main): Parse new option to 'check_ucs_norm'.

* subversion/tests/cmdline/svnadmin_tests.py (verify_denormalized_names):
   New test case; runs 'svnadmin verify' with normalisation check enabled.
  (test_list): Enable verify_denormalized_names.
* subversion/tests/cmdline/svnadmin_tests_data/normalization_check.dump:
   New dumpfile; data for svnadmin_tests.verify_denormalized_names.


git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1544906 13f79535-47bb-0310-9956-ffa450edef68