On 'hold' branch: teach 'svn diff' to hold local mods.

Make 'diff' omit (only the) local modifications on files that have the
'svn:hold' property set. (diff_repos_repos is not affected, and diff_repos_wc
only omits the local mods, if any, but shows the repos_repos part of mods.)

Also add the --do-not-hold option to 'svn diff', which, when passed, does not
omit any modifications, regardless of 'svn:hold'.

* subversion/include/svn_client.h
  (svn_client_diff6, svn_client_diff_peg6):
    New functions; add DO_NOT_HOLD over *5().

* subversion/include/svn_wc.h
  (svn_wc_get_diff_editor7, svn_wc_diff7): 
    New functions; add DO_NOT_HOLD over *6().

* subversion/libsvn_client/diff.c
  (do_diff, diff_wc_wc, diff_repos_wc):
    Add parameter DO_NOT_HOLD and pass through to ultimately
    svn_wc_diff7() (wc-wc) or svn_wc_get_diff_editor7() (wc-url).
  (svn_client_diff6, svn_client_diff_peg6): New functions (s.a.).
  (svn_client_diff5, svn_client_diff_peg5):
    Call *6(), passing DO_NOT_HOLD as TRUE to yield previous behavior.

* subversion/libsvn_wc/diff_editor.c
  (struct edit_baton): Add DO_NOT_HOLD.
  (make_edit_baton): Add parameter DO_NOT_HOLD, placed in the new baton.
  (file_diff):
    Skip file diffs if they have an svn:hold prop (locally added files).
  (close_file):
    Skip local mods on files that have an svn:hold prop (wc-url).
  (svn_wc_get_diff_editor7): New function (s.a.).
  (svn_wc_get_diff_editor6):
    Call *7() with DO_NOT_HOLD as TRUE to yield previous behavior.

* subversion/libsvn_wc/diff_local.c
  (struct diff_baton): Add DO_NOT_HOLD.
  (file_diff): Skip file diffs if they have an svn:hold prop (wc-wc).
  (svn_wc_diff7): New function (s.a.).
  (svn_wc_diff6):
    Call *7() with DO_NOT_HOLD as TRUE to yield previous behavior.

* subversion/svn/diff-cmd.c
  (svn_cl__diff): 
    Call svn_client_diff[_peg]6() instead of *5(), pass DO_NOT_HOLD.

* subversion/svn/main.c
  (svn_cl__options):
    Revise online help string for --do-not-hold option, to also match diff.
  (svn_cl__cmd_table): Add OPT_DO_NOT_HOLD to the 'diff' command.



git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/hold@1160093 13f79535-47bb-0310-9956-ffa450edef68
7 files changed