You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by gs...@apache.org on 2010/04/23 06:45:53 UTC

svn commit: r937152 - /subversion/trunk/subversion/libsvn_wc/entries.c

Author: gstein
Date: Fri Apr 23 04:45:52 2010
New Revision: 937152

URL: http://svn.apache.org/viewvc?rev=937152&view=rev
Log:
Be wary of calling svn_wc__db_scan_addition for an obstructed_add node.
Jury-rig some values to deal with the lack of a scan.

(ignore the lack of proper indentation; future revision)

* subversion/libsvn_wc/entries.c:
  (read_one_entry): if the node is an obstructed_add, then take particular
    care to avoid a scan_addition (since it is missing needed data).

Modified:
    subversion/trunk/subversion/libsvn_wc/entries.c

Modified: subversion/trunk/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.c?rev=937152&r1=937151&r2=937152&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.c (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.c Fri Apr 23 04:45:52 2010
@@ -808,6 +808,18 @@ read_one_entry(const svn_wc_entry_t **ne
                 }
             }
 
+          /* If we don't have "real" data from the entry (obstruction),
+             then we cannot begin a scan for data. The original node may
+             have important data. Set up stuff to kill that idea off,
+             and finish up this entry.  */
+          if (status == svn_wc__db_status_obstructed_add)
+            {
+              entry->cmt_rev = SVN_INVALID_REVNUM;
+              work_status = svn_wc__db_status_normal;
+              scanned_original_relpath = NULL;
+            }
+          else
+            {
           SVN_ERR(svn_wc__db_scan_addition(&work_status,
                                            &op_root_abspath,
                                            &repos_relpath,
@@ -819,6 +831,7 @@ read_one_entry(const svn_wc_entry_t **ne
                                            db,
                                            entry_abspath,
                                            result_pool, iterpool));
+            }
 
           if (!SVN_IS_VALID_REVNUM(entry->cmt_rev)
               && scanned_original_relpath == NULL)
@@ -1053,6 +1066,7 @@ read_one_entry(const svn_wc_entry_t **ne
       SVN_ERR_ASSERT(repos_relpath != NULL
                      || entry->schedule == svn_wc_schedule_delete
                      || status == svn_wc__db_status_obstructed
+                     || status == svn_wc__db_status_obstructed_add
                      || status == svn_wc__db_status_obstructed_delete
                      || status == svn_wc__db_status_not_present
                      || status == svn_wc__db_status_absent