I've verified the fix. The "text_status" for the "svn_wc_status2_t" object now has the value of "svn_wc_status_normal".

Will this fix go out in a 1.7.8 and/or 1.8?

Also, I'm trying to track down what releases have this bug. It looks like starting with 1.6.12 on up, which includes all of 1.7.x (i.e. 1.7.0 - 1.7.7). Is that correct?

Thanks,
Sean

Philip Martin wrote:
Sean Farrell <sfarr...@wv.mentorg.com> writes:

 (*status)->text_status = old_status->node_status;
 (*status)->prop_status = old_status->prop_status;

 (*status)->repos_text_status = old_status->repos_node_status;
 (*status)->repos_prop_status = old_status->repos_prop_status;

 /* Some values might be inherited from properties */
 if (old_status->node_status == svn_wc_status_modified
     || old_status->node_status == svn_wc_status_conflicted)
   (*status)->text_status = old_status->text_status;

 /* (Currently a no-op, but just make sure it is ok) */
 if (old_status->repos_node_status == svn_wc_status_modified
     || old_status->repos_node_status == svn_wc_status_conflicted)
   (*status)->text_status = old_status->repos_text_status;
...
}

As you can see "text_status" and "repos_text_status" follow similar logic, however the last line appears to be a copy & paste bug, 
where "text_status" is used it should instead be "repos_text_status". This explains why the "svn_wc_status2_t->text_status" 
has the value "svn_wc_status_modified" because it's being set to the value of  "svn_wc_status3_t->repos_text_status".

This section of code was committed with revision 955787 by rhuijben.

Can anyone confirm my findings are correct, or wrong?

I think you are correct.  Can you confirm that this is the correct fix:

Index: ../src/subversion/libsvn_wc/util.c
===================================================================
--- ../src/subversion/libsvn_wc/util.c  (revision 1402519)
+++ ../src/subversion/libsvn_wc/util.c  (working copy)
@@ -469,7 +469,7 @@
   /* (Currently a no-op, but just make sure it is ok) */
   if (old_status->repos_node_status == svn_wc_status_modified
       || old_status->repos_node_status == svn_wc_status_conflicted)
-    (*status)->text_status = old_status->repos_text_status;
+    (*status)->repos_text_status = old_status->repos_text_status;
if (old_status->node_status == svn_wc_status_added)
     (*status)->prop_status = svn_wc_status_none; /* No separate info */



Reply via email to