You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/01/16 15:45:35 UTC
svn commit: r1433958 - in /subversion/trunk/subversion: include/svn_client.h
libsvn_client/deprecated.c libsvn_client/diff.c svn/cl.h svn/diff-cmd.c
svn/log-cmd.c svn/svn.c
Author: rhuijben
Date: Wed Jan 16 14:45:35 2013
New Revision: 1433958
URL: http://svn.apache.org/viewvc?rev=1433958&view=rev
Log:
To finally close issue #3009, and for similarity with 'svnlook diff', add a
--no-diff-added output filtering argument to 'svn diff'.
* subversion/include/svn_client.h
(svn_client_diff6,
svn_client_diff_peg6): Update arguments.
* subversion/libsvn_client/deprecated.c
(svn_client_diff5,
svn_client_diff_peg5): Update caller.
* subversion/libsvn_client/diff.c
(diff_cmd_baton): Add variable.
(diff_file_added): Filter diff if requested.
(svn_client_diff6,
svn_client_diff_peg6): Set value in baton.
* subversion/svn/cl.h
(svn_cl__opt_state_t.diff): Add variable.
* subversion/svn/diff-cmd.c
(svn_cl__diff): Update caller.
* subversion/svn/log-cmd.c
(svn_cl__log): Update caller.
* subversion/svn/svn.c
(svn_cl__longopt_t): Add value.
(svn_cl__options): Add argument.
(svn_cl__cmd_table): Declare --no-diff-added for diff.
(sub_main): Parse argument.
Modified:
subversion/trunk/subversion/include/svn_client.h
subversion/trunk/subversion/libsvn_client/deprecated.c
subversion/trunk/subversion/libsvn_client/diff.c
subversion/trunk/subversion/svn/cl.h
subversion/trunk/subversion/svn/diff-cmd.c
subversion/trunk/subversion/svn/log-cmd.c
subversion/trunk/subversion/svn/svn.c
Modified: subversion/trunk/subversion/include/svn_client.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_client.h?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_client.h (original)
+++ subversion/trunk/subversion/include/svn_client.h Wed Jan 16 14:45:35 2013
@@ -2939,6 +2939,9 @@ svn_client_blame(const char *path_or_url
* and the addition of another, but if this flag is TRUE, unrelated
* items will be diffed as if they were related.
*
+ * If @a no_diff_added is TRUE, then no diff output will be generated
+ * on added files.
+ *
* If @a no_diff_deleted is TRUE, then no diff output will be
* generated on deleted files.
*
@@ -3000,6 +3003,7 @@ svn_client_diff6(const apr_array_header_
const char *relative_to_dir,
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
+ svn_boolean_t no_diff_added,
svn_boolean_t no_diff_deleted,
svn_boolean_t show_copies_as_adds,
svn_boolean_t ignore_content_type,
@@ -3015,7 +3019,7 @@ svn_client_diff6(const apr_array_header_
/** Similar to svn_client_diff6(), but with @a outfile and @a errfile,
* instead of @a outstream and @a errstream, and always showing property
- * changes.
+ * changes and additions.
*
* @deprecated Provided for backward compatibility with the 1.7 API.
* @since New in 1.7.
@@ -3161,6 +3165,7 @@ svn_client_diff_peg6(const apr_array_hea
const char *relative_to_dir,
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
+ svn_boolean_t no_diff_added,
svn_boolean_t no_diff_deleted,
svn_boolean_t show_copies_as_adds,
svn_boolean_t ignore_content_type,
Modified: subversion/trunk/subversion/libsvn_client/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/deprecated.c?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_client/deprecated.c Wed Jan 16 14:45:35 2013
@@ -937,9 +937,11 @@ svn_client_diff5(const apr_array_header_
return svn_client_diff6(diff_options, path1, revision1, path2,
revision2, relative_to_dir, depth,
- ignore_ancestry, no_diff_deleted,
- show_copies_as_adds, ignore_content_type, FALSE,
- FALSE, use_git_diff_format, header_encoding,
+ ignore_ancestry, FALSE /* no_diff_added */,
+ no_diff_deleted, show_copies_as_adds,
+ ignore_content_type, FALSE /* ignore_properties */,
+ FALSE /* properties_only */, use_git_diff_format,
+ header_encoding,
outstream, errstream, changelists, ctx, pool);
}
@@ -1063,11 +1065,12 @@ svn_client_diff_peg5(const apr_array_hea
relative_to_dir,
depth,
ignore_ancestry,
+ FALSE /* no_diff_added */,
no_diff_deleted,
show_copies_as_adds,
ignore_content_type,
- FALSE,
- FALSE,
+ FALSE /* ignore_properties */,
+ FALSE /* properties_only */,
use_git_diff_format,
header_encoding,
outstream,
Modified: subversion/trunk/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/diff.c?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/diff.c (original)
+++ subversion/trunk/subversion/libsvn_client/diff.c Wed Jan 16 14:45:35 2013
@@ -588,6 +588,9 @@ struct diff_cmd_baton {
/* Whether we're producing a git-style diff. */
svn_boolean_t use_git_diff_format;
+ /* Whether addition of a file is summarized versus showing a full diff. */
+ svn_boolean_t no_diff_added;
+
/* Whether deletion of a file is summarized versus showing a full diff. */
svn_boolean_t no_diff_deleted;
@@ -993,7 +996,22 @@ diff_file_added(svn_wc_notify_state_t *c
rev2 = diff_cmd_baton->revnum2;
}
- if (tmpfile1 && copyfrom_path)
+ if (diff_cmd_baton->no_diff_added)
+ {
+ const char *index_path = diff_relpath;
+
+ if (diff_cmd_baton->anchor)
+ index_path = svn_dirent_join(diff_cmd_baton->anchor, diff_relpath,
+ scratch_pool);
+
+ SVN_ERR(svn_stream_printf_from_utf8(diff_cmd_baton->outstream,
+ diff_cmd_baton->header_encoding, scratch_pool,
+ "Index: %s (added)" APR_EOL_STR
+ SVN_DIFF__EQUAL_STRING APR_EOL_STR,
+ index_path));
+ wrote_header = TRUE;
+ }
+ else if (tmpfile1 && copyfrom_path)
SVN_ERR(diff_content_changed(&wrote_header, diff_relpath,
tmpfile1, tmpfile2, rev1, rev2,
mimetype1, mimetype2,
@@ -2906,6 +2924,7 @@ svn_client_diff6(const apr_array_header_
const char *relative_to_dir,
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
+ svn_boolean_t no_diff_added,
svn_boolean_t no_diff_deleted,
svn_boolean_t show_copies_as_adds,
svn_boolean_t ignore_content_type,
@@ -2948,6 +2967,7 @@ svn_client_diff6(const apr_array_header_
diff_cmd_baton.properties_only = properties_only;
diff_cmd_baton.relative_to_dir = relative_to_dir;
diff_cmd_baton.use_git_diff_format = use_git_diff_format;
+ diff_cmd_baton.no_diff_added = no_diff_added;
diff_cmd_baton.no_diff_deleted = no_diff_deleted;
diff_cmd_baton.wc_ctx = ctx->wc_ctx;
diff_cmd_baton.ra_session = NULL;
@@ -2969,6 +2989,7 @@ svn_client_diff_peg6(const apr_array_hea
const char *relative_to_dir,
svn_depth_t depth,
svn_boolean_t ignore_ancestry,
+ svn_boolean_t no_diff_added,
svn_boolean_t no_diff_deleted,
svn_boolean_t show_copies_as_adds,
svn_boolean_t ignore_content_type,
@@ -3007,6 +3028,7 @@ svn_client_diff_peg6(const apr_array_hea
diff_cmd_baton.properties_only = properties_only;
diff_cmd_baton.relative_to_dir = relative_to_dir;
diff_cmd_baton.use_git_diff_format = use_git_diff_format;
+ diff_cmd_baton.no_diff_added = no_diff_added;
diff_cmd_baton.no_diff_deleted = no_diff_deleted;
diff_cmd_baton.wc_ctx = ctx->wc_ctx;
diff_cmd_baton.ra_session = NULL;
Modified: subversion/trunk/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/cl.h?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/cl.h (original)
+++ subversion/trunk/subversion/svn/cl.h Wed Jan 16 14:45:35 2013
@@ -186,6 +186,7 @@ typedef struct svn_cl__opt_state_t
{
const char *diff_cmd; /* the external diff command to use */
svn_boolean_t internal_diff; /* override diff_cmd in config file */
+ svn_boolean_t no_diff_added; /* do not show diffs for deleted files */
svn_boolean_t no_diff_deleted; /* do not show diffs for deleted files */
svn_boolean_t show_copies_as_adds; /* do not diff copies with their source */
svn_boolean_t notice_ancestry; /* notice ancestry for diff-y operations */
Modified: subversion/trunk/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/diff-cmd.c?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/diff-cmd.c (original)
+++ subversion/trunk/subversion/svn/diff-cmd.c Wed Jan 16 14:45:35 2013
@@ -394,6 +394,7 @@ svn_cl__diff(apr_getopt_t *os,
NULL,
opt_state->depth,
! opt_state->diff.notice_ancestry,
+ opt_state->diff.no_diff_added,
opt_state->diff.no_diff_deleted,
show_copies_as_adds,
opt_state->force,
@@ -444,6 +445,7 @@ svn_cl__diff(apr_getopt_t *os,
NULL,
opt_state->depth,
! opt_state->diff.notice_ancestry,
+ opt_state->diff.no_diff_added,
opt_state->diff.no_diff_deleted,
show_copies_as_adds,
opt_state->force,
Modified: subversion/trunk/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/log-cmd.c?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/log-cmd.c (original)
+++ subversion/trunk/subversion/svn/log-cmd.c Wed Jan 16 14:45:35 2013
@@ -128,13 +128,14 @@ display_diff(const svn_log_entry_t *log_
&start_revision, &end_revision,
NULL,
depth,
- FALSE, /* ignore ancestry */
- TRUE, /* no diff deleted */
- FALSE, /* show copies as adds */
- FALSE, /* ignore content type */
- FALSE, /* ignore prop diff */
- FALSE, /* properties only */
- FALSE, /* use git diff format */
+ FALSE /* ignore ancestry */,
+ FALSE /* no diff added */,
+ TRUE /* no diff deleted */,
+ FALSE /* show copies as adds */,
+ FALSE /* ignore content type */,
+ FALSE /* ignore prop diff */,
+ FALSE /* properties only */,
+ FALSE /* use git diff format */,
svn_cmdline_output_encoding(pool),
outstream,
errstream,
Modified: subversion/trunk/subversion/svn/svn.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/svn.c?rev=1433958&r1=1433957&r2=1433958&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/svn.c (original)
+++ subversion/trunk/subversion/svn/svn.c Wed Jan 16 14:45:35 2013
@@ -75,6 +75,7 @@ typedef enum svn_cl__longopt_t {
/* diff options */
opt_diff_cmd,
opt_internal_diff,
+ opt_no_diff_added,
opt_no_diff_deleted,
opt_show_copies_as_adds,
opt_notice_ancestry,
@@ -337,6 +338,8 @@ const apr_getopt_option_t svn_cl__option
{"diff-cmd", opt_diff_cmd, 1, N_("use ARG as diff command")},
{"internal-diff", opt_internal_diff, 0,
N_("override diff-cmd specified in config file")},
+ {"no-diff-added", opt_no_diff_added, 0,
+ N_("do not print differences for added files")},
{"no-diff-deleted", opt_no_diff_deleted, 0,
N_("do not print differences for deleted files")},
{"show-copies-as-adds", opt_show_copies_as_adds, 0,
@@ -557,8 +560,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
"\n"
" Use just 'svn diff' to display local modifications in a working copy.\n"),
{'r', 'c', opt_old_cmd, opt_new_cmd, 'N', opt_depth, opt_diff_cmd,
- opt_internal_diff, 'x', opt_no_diff_deleted, opt_ignore_properties,
- opt_properties_only,
+ opt_internal_diff, 'x', opt_no_diff_added, opt_no_diff_deleted,
+ opt_ignore_properties, opt_properties_only,
opt_show_copies_as_adds, opt_notice_ancestry, opt_summarize, opt_changelist,
opt_force, opt_xml, opt_use_git_diff_format, opt_patch_compatible} },
{ "export", svn_cl__export, {0}, N_
@@ -1998,6 +2001,9 @@ sub_main(int argc, const char *argv[], a
case opt_trust_server_cert:
opt_state.trust_server_cert = TRUE;
break;
+ case opt_no_diff_added:
+ opt_state.diff.no_diff_added = TRUE;
+ break;
case opt_no_diff_deleted:
opt_state.diff.no_diff_deleted = TRUE;
break;