On the invoke-diff3-feature branch: Add new invoke-diff3-cmd to
Subversion.


* BRANCH-README
  (*)  Description of Branch.


* subversion/include/private/svn_wc_private.h

  (svn_wc__get_file_external_editor,
  (svn_wc__get_update_editor,
  (svn_wc__get_switch_editor): New parameter:
     const char *invoke_diff3_cmd.


* subversion/include/svn_config.h

  (): New definition: SVN_CONFIG_OPTION_INVOKE_DIFF3_CMD.


* subversion/include/svn_error_codes.h

  (command-line client errors): New definition:
    SVN_ERR_CL_NO_EXTERNAL_DIFF3_TOOL.

  (SVN_ERR_CL_ERROR_PROCESSING_EXTERNALS): Adjust numbering in order
    to retain a logical grouping.

* subversion/include/svn_io.h

  (svn_io_run_invoke_diff3): New function.


* subversion/include/svn_wc.h
 
  (svn_wc_merge6):  New function.

  (svn_wc_merge5):  Deprecate.
  

* subversion/libsvn_client/externals.c

  (switch_file_external): New variable: const char *invoke_diff3_cmd.
    Initialize diff3_cmd to NULL.  Add precedence logic and read the
    config file to populate invoke_diff3_cmd.  Add invoke_diff3_cmd in
    call to svn_wc__get_file_external_editor().


* subversion/libsvn_client/merge.c

  (merge_cmd_baton_t): New member *invoke_diff3_cmd.  Adjust comment.

  (merge_file_changed): Replace call to svn_wc_merge5 with call to
    svn_wc_merge6.

  (do_merge): New variable: const char *invoke_diff3_cmd. Initialize
    diff3_cmd to NULL.  Adjust comment. Add precedence logic and read
    the config file to populate invoke_diff3_cmd. Add invoke_diff3_cmd
    to merge_baton.


* subversion/libsvn_client/switch.c

  (switch_internal): New variable: const char *invoke_diff3_cmd.  Add
    precedence logic and read the config file to populate
    invoke_diff3_cmd.  Add invoke_diff3_cmd in call to
    svn_wc__get_switch_editor().


* subversion/libsvn_client/update.c

  (update_internal): Initialize diff3_cmd to NULL.  New variable:
    *invoke_diff3_cmd.  Adjust comment, add precedence logic and read
    the config file to populate invoke_diff3_cmd.  Add
    invoke_diff3_cmd in call to svn_wc__get_update_editor().


* subversion/libsvn_subr/config_file.c 
 
  (svn_config_ensure): Add entry for invoke-diff3-cmd.


* subversion/libsvn_subr/io.c

  (svn_io_run_invoke_diff3): New function.


* subversion/libsvn_wc/deprecated.c

  (svn_wc_get_update_editor4): Add invoke-diff3-cmd as NULL to call to
    svn_wc__get_update_editor().

  (svn_wc_get_switch_editor4): Add invoke-diff3-cmd as NULL to call to
    svn_wc__get_switch_editor().

  (svn_wc_merge5): New  function.


* subversion/libsvn_wc/externals.c

  (struct edit_baton): Rename diff3cmd to diff3_cmd.  New member
    variable: const char *invoke_diff3_cmd.

  (close_file): Rename diff3cmd to diff3_cmd and add invoke_diff3_cmd
    in call to svn_wc__perform_file_merge().

  (svn_wc__get_file_external_editor): New parameter: const char
    *invoke_diff3_cmd.  Rename diff3cmd to diff3_cmd in eb
    assignment and assign invoke_diff3_cmd to struct edit_baton eb.


* subversion/libsvn_wc/merge.c 

  (merge_target_t): Adjust comment for old_actual_props.  New member
    variable: invoke_diff3_cmd.

  (do_text_merge_external): New parameter: const char
    invoke_diff3_cmd.  Add if condition to route call to newly added
    svn_io_run_invoke_diff3().  Add clarifying braces around
    A = (B == C) type assignment.

  (merge_text_file): Adjust if condition to route call to
    do_text_merge_external() and add invoke_diff3_cmd to call to
    do_text_merge_external().

  (svn_wc__internal_merge): New parameter: const char
    *invoke_diff3_cmd.  Assign invoke_diff3_cmd to mt. Add
    invoke_diff3_cmd as a conditional variable in to call to
    detranslate_wc_file().

  (svn_wc_merge6): Declare new API.


* subversion/libsvn_wc/update_editor.c

  (struct edit_baton): New member const char *invoke_diff3_cmd.

  (svn_wc__perform_file_merge): New parameter: const char
    *invoke_diff3_cmd.  Add invoke_diff3_cmd to
    svn_wc__internal_merge(). 

  (merge_file): Add invoke_diff3_cmd to svn_wc__internal_merge().

  (make_editor): New parameter: const char *invoke_diff3_cmd.  Assign
    invoke_diff3_cmd to eb.

  (svn_wc__get_update_editor, svn_wc__get_switch_editor): New
    parameter: const char *invoke_diff3_cmd. Add invoke_diff3_cmd to
    call to make_editor().


* subversion/libsvn_wc/wc.h

  (svn_wc__internal_merge): Adjust function comment.  New parameter:
    const char *invoke_diff3_cmd.  Add newline to conform to general
    formatting in this file.

  (svn_wc__perform_file_merge): New parameter: const char
    *invoke_diff3_cmd.


* subversion/libsvn_wc/wc_db_update_move.c

  (update_working_file): Add invoke_diff3_cmd in call to
    svn_wc__perform_file_merge() as NULL.  Adjust other comments for
    neatness.


* subversion/svn/cl.h

  (svn_cl__accept_t): New commented member:
    svn_cl__accept_invoke_diff3_config.
  
  ():  New definition: SVN_CL__ACCEPT_INVOKE_DIFF3_CONFIG.

  (svn_cl__opt_state_t): New member const char* invoke_diff3_cmd.

  (svn_cl__invoke_diff3_cmd_externally): New function.


* subversion/svn/conflict-callbacks.c

  (svn_cl__accept_from_word): Add SVN_CL__ACCEPT_INVOKE_DIFF3_CONFIG
    to if condition returns svn_cl__accept_launch.

  (invoke_diff3_resolver): New routing function that calls
    svn_cl__invoke_diff3_cmd_externally().

  (text_conflict_options): Add "3f" option for invoke-diff3-cmd tool
    selection and add 'i' option for interactive invoke-diff3-cmd
    input.

  (handle_text_conflict): Add interactive selection code for
    invoke-diff3-cmd input ("i" section) and invoke-diff3-cmd tool
    ("3f" section) to if condition.  Add '3f' and 'i' to next_option.
    Adjust general indentation(2 entries). 

  (conflict_func_interactive): Add cases for "i" and "3f" selection.
    Adjust general indentation.  Add case
    'svn_cl__accept_invoke_diff3_config'.


* subversion/svn/svn.c

  (svn_cl__longopt_t): New member 'opt_diff3_cmd'.

  (svn_cl__options): Add 'invoke-diff3-cmd' entry plus help text.

  (svn_cl__cmd_table,"cleanup","merge","switch","update"): Add
    opt_invoke_diff3_cmd.

  (sub_main): Add case opt_invoke_diff3_cmd.  Ensure murutal
    exclusiveness of diff3-cmd and invoke-diff3-cmd.  Add call to
    svn_config_set().  Add error check for
    svn_cl__accept_invoke_diff3_config.


* subversion/svn/util.c

  (): Include svn_io_private.h

  (svn_cl__invoke_diff3_cmd_externally): New function.


* subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout

  (): Update help output.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/invoke-diff3-feature@1542514 13f79535-47bb-0310-9956-ffa450edef68
23 files changed