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 2010/06/30 23:20:59 UTC

svn commit: r959438 - /subversion/trunk/subversion/svn/status-cmd.c

Author: rhuijben
Date: Wed Jun 30 21:20:58 2010
New Revision: 959438

URL: http://svn.apache.org/viewvc?rev=959438&view=rev
Log:
* subversion/svn/status-cmd.c
  (print_status): Following up on r937468 and r959426, reduce the number
    of cases where we try to overlay 'missing' data with that from the
    node before replacement.

Modified:
    subversion/trunk/subversion/svn/status-cmd.c

Modified: subversion/trunk/subversion/svn/status-cmd.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/status-cmd.c?rev=959438&r1=959437&r2=959438&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/status-cmd.c (original)
+++ subversion/trunk/subversion/svn/status-cmd.c Wed Jun 30 21:20:58 2010
@@ -171,7 +171,7 @@ print_status(void *baton,
              apr_pool_t *pool)
 {
   struct status_baton *sb = baton;
-  svn_client_status_t *tweaked_status;
+
   svn_revnum_t revision;
   svn_revnum_t changed_rev;
   apr_time_t changed_date;
@@ -179,7 +179,6 @@ print_status(void *baton,
   const char *local_abspath;
 
   local_abspath = status->local_abspath;
-  tweaked_status = svn_client_status_dup(status, sb->cl_pool);
 
   /* ### The revision information with associates are based on what
    * ### _read_info() returns. The svn_wc_status_func4_t callback is
@@ -187,8 +186,14 @@ print_status(void *baton,
    * ### WORKING nodes on its own. Until we've agreed on how the CLI should
    * ### handle the revision information, we use this appproach to stay compat
    * ### with our testsuite. */
-  if (status->versioned)
+  if (status->versioned
+      && !SVN_IS_VALID_REVNUM(status->revision)
+      && !status->copied)
     {
+      svn_client_status_t *tweaked_status
+                 = svn_client_status_dup(status, sb->cl_pool);
+
+      /* Retrieve some data from the original version of the replaced node */
       SVN_ERR(svn_wc__node_get_working_rev_info(&revision, &changed_rev,
                                                 &changed_date,
                                                 &changed_author,
@@ -199,6 +204,8 @@ print_status(void *baton,
       tweaked_status->changed_rev = changed_rev;
       tweaked_status->changed_date = changed_date;
       tweaked_status->changed_author = changed_author;
+
+      status = tweaked_status;
     }
 
   /* If the path is part of a changelist, then we don't print
@@ -211,7 +218,7 @@ print_status(void *baton,
       const char *cl_key = apr_pstrdup(sb->cl_pool, status->changelist);
       struct status_cache *scache = apr_pcalloc(sb->cl_pool, sizeof(*scache));
       scache->path = apr_pstrdup(sb->cl_pool, path);
-      scache->status = svn_client_status_dup(tweaked_status, sb->cl_pool);
+      scache->status = svn_client_status_dup(status, sb->cl_pool);
 
       path_array =
         apr_hash_get(sb->cached_changelists, cl_key, APR_HASH_KEY_STRING);
@@ -227,7 +234,7 @@ print_status(void *baton,
       return SVN_NO_ERROR;
     }
 
-  return print_status_normal_or_xml(baton, path, tweaked_status, pool);
+  return print_status_normal_or_xml(baton, path, status, pool);
 }
 
 /* This implements the `svn_opt_subcommand_t' interface. */