You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2013/02/08 02:56:43 UTC
svn commit: r1443821 - /subversion/trunk/subversion/svn/diff-cmd.c
Author: julianfoad
Date: Fri Feb 8 01:56:29 2013
New Revision: 1443821
URL: http://svn.apache.org/r1443821
Log:
Make 'svn diff --old=FOO --new=BAR' default to WORKING revision rather than
BASE for the old target if the new target is explicitly specified, so that
it is the reverse of the diff from 'svn diff --old=BAR --new=FOO'.
Patch by: Alexey Neyman <stilor{_AT_}att.net>
* subversion/svn/diff-cmd.c
(svn_cl__diff): Change defaults as described and simplify the logic.
Modified:
subversion/trunk/subversion/svn/diff-cmd.c
Modified: subversion/trunk/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/diff-cmd.c?rev=1443821&r1=1443820&r2=1443821&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/diff-cmd.c (original)
+++ subversion/trunk/subversion/svn/diff-cmd.c Fri Feb 8 01:56:29 2013
@@ -238,10 +238,11 @@ svn_cl__diff(apr_getopt_t *os,
targets->nelts = 0;
/* Set default start/end revisions based on target types, in the same
- * manner as done for the corresponding '--old X --new Y' cases. */
+ * manner as done for the corresponding '--old X --new Y' cases,
+ * (note that we have an explicit --new target) */
if (opt_state->start_revision.kind == svn_opt_revision_unspecified)
opt_state->start_revision.kind = svn_path_is_url(old_target)
- ? svn_opt_revision_head : svn_opt_revision_base;
+ ? svn_opt_revision_head : svn_opt_revision_working;
if (opt_state->end_revision.kind == svn_opt_revision_unspecified)
opt_state->end_revision.kind = svn_path_is_url(new_target)
@@ -280,21 +281,14 @@ svn_cl__diff(apr_getopt_t *os,
if (new_rev.kind != svn_opt_revision_unspecified)
opt_state->end_revision = new_rev;
- if (opt_state->new_target
- && opt_state->start_revision.kind == svn_opt_revision_unspecified
- && opt_state->end_revision.kind == svn_opt_revision_unspecified
- && ! svn_path_is_url(old_target)
- && ! svn_path_is_url(new_target))
- {
- /* We want the arbitrary_nodes_diff instead of just working nodes */
- opt_state->start_revision.kind = svn_opt_revision_working;
- opt_state->end_revision.kind = svn_opt_revision_working;
- }
-
+ /* For URLs, default to HEAD. For WC paths, default to WORKING if
+ * new target is explicit; if new target is implicitly the same as
+ * old target, then default the old to BASE and new to WORKING. */
if (opt_state->start_revision.kind == svn_opt_revision_unspecified)
opt_state->start_revision.kind = svn_path_is_url(old_target)
- ? svn_opt_revision_head : svn_opt_revision_base;
-
+ ? svn_opt_revision_head
+ : (opt_state->new_target
+ ? svn_opt_revision_working : svn_opt_revision_base);
if (opt_state->end_revision.kind == svn_opt_revision_unspecified)
opt_state->end_revision.kind = svn_path_is_url(new_target)
? svn_opt_revision_head : svn_opt_revision_working;