[[[
Add new diff option "--invoke-diff-cmd" which allows the user to
define a custom command line or config file entry for an external
diff program.

* subversion/include/svn_client.h 

  (svn_client_diff7, svn_client_diff_peg7): Declare the new API.  Like
    svn_client_diff[_peg]6 but with invoke_diff_cmd parameter.

  (svn_client_diff6, svn_client_diff_peg_6): Deprecate. 


* subversion/include/svn_config.h

  (SVN_CONFIG_OPTION_INVOKE_DIFF_CMD): New definition.


* subversion/include/svn_io.h

   (svn_io_create_custom_diff_cmd): New function.

   (svn_io_run_external_diff): New function.


* subversion/libsvn_client/deprecated.c

  (svn_client_diff6, svn_client_diff_peg6): New deprecation wrappers.


* subversion/libsvn_client/diff.c

  (struct diff_cmd_baton): New member: 'invoke_diff_cmd'.

  (diff_content_changed): Call svn_io_run_external_diff if
    --invoke-diff-cmd option was specified, otherwise retain previous
    behaviour.

  (set_up_diff_cmd_and_options): Apply invoke-diff-cmd option 
    preferentially.  Old behavior unchanged.
   
  (svn_client_diff_peg_7): Rename and update from
    svn_client_diff_peg_6.  Add new parameter: invoke_diff_cmd.

  (svn_client_diff7): Rename and update from svn_client_diff6, add
    new parameter 'invoke_diff_cmd'.  

  (): Update all comments mentioning 'svn_client_diff6' to
    'svn_client_diff7'.


* subversion/libsvn_subr/config_file.c

  (svn_config_ensure): New entry: invoke-diff-cmd. 


* subversion/libsvn_subr/io.c

  (svn_io_create_custom_diff_cmd): New function.

  (svn_io_run_external_diff): New function.


* subversion/svn/cl.h

  (struct svn_cl__opt_state_t.diff): New member: 'invoke_diff_cmd'.


* subversion/svn/diff-cmd.c

  (svn_cl__diff): Update call to svn_client_diff6 to svn_client_diff7.


* subversion/svn/svn.c

  (svn_cl__options[]): Add help info and new variable: 
    'opt_invoke_diff_cmd'.

  (svn_cl__cmd_table[]): New option: 'invoke-diff-cmd'.

  (sub_main): Prohibit simultaneous usage of --invoke-diff-cmd and
    --internal-diff. Add new opt_state.diff.invoke-diff-cmd option 
    to the option selector.  Add call to svn_config_set.


* subversion/tests/cmdline/diff_tests.py

  (diff_invoke_external_diffcmd): New function.

  (test_list): Add new entry 'diff_invoke_external_diffcmd'.


* tools/hook-scripts/argv_dump.pl

  (New File): Perl script that enumerates output by svn to assist with
    testing.

]]]

git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/invoke-diff-cmd-feature@1483945 13f79535-47bb-0310-9956-ffa450edef68