Author: svn-role Date: Sat Apr 18 04:00:42 2015 New Revision: 1674437 URL: http://svn.apache.org/r1674437 Log: Merge the r1663671 group from trunk:
* r1663671, r1666832 Resolve an assertion on a bad update report involving incomplete status Justification: The tree conflict detection logic in the update editor wasn't designed to handle BASE adds, where the is an existing basenode. This patch makes the update logic handling properly handle this bad state for incomplete nodes, like it already does for status normal nodes. . Resolves a reproducable assertion in an restarted checkout against github. Votes: +1: rhuijben, stefan2, brane Modified: subversion/branches/1.9.x/ (props changed) subversion/branches/1.9.x/STATUS subversion/branches/1.9.x/subversion/libsvn_wc/update_editor.c Propchange: subversion/branches/1.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Apr 18 04:00:42 2015 @@ -91,4 +91,4 @@ /subversion/branches/verify-at-commit:1462039-1462408 /subversion/branches/verify-keep-going:1439280-1546110 /subversion/branches/wc-collate-path:1402685-1480384 -/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663338,1663347,1663355,1663374,1663450,1663697,1663706,1663738,1663749,1663791,1663991,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664593-1664594,1664596,1664653,1664664,1664672,1664674,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665213,1665259,1665318,1665437-1665438,1665609,1665611-1665612,1665845,1665850,1665852,1665886,1665894,1665896,1666096,1666258,1666270,1666272,1666379,1666449,1666690,1666851,1667101,1667106-1667107,1667228,1667233-1667235,1667249-1667250,1667258,1667290,1667301,1667471,1667691-1667693,1667715,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1669743,1669746,1669749,1669945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,1672372,1672404,167 2511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673170,1673172,1673197,1673202,1673204,1673228,1673282,1673445,1673691-1673692,1673746,1673785,1673803,1674015,1674032,1674170 +/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663338,1663347,1663355,1663374,1663450,1663671,1663697,1663706,1663738,1663749,1663791,1663991,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664593-1664594,1664596,1664653,1664664,1664672,1664674,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665213,1665259,1665318,1665437-1665438,1665609,1665611-1665612,1665845,1665850,1665852,1665886,1665894,1665896,1666096,1666258,1666270,1666272,1666379,1666449,1666690,1666832,1666851,1667101,1667106-1667107,1667228,1667233-1667235,1667249-1667250,1667258,1667290,1667301,1667471,1667691-1667693,1667715,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1669743,1669746,1669749,1669945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,167 2372,1672404,1672511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673170,1673172,1673197,1673202,1673204,1673228,1673282,1673445,1673691-1673692,1673746,1673785,1673803,1674015,1674032,1674170 Modified: subversion/branches/1.9.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/STATUS?rev=1674437&r1=1674436&r2=1674437&view=diff ============================================================================== --- subversion/branches/1.9.x/STATUS (original) +++ subversion/branches/1.9.x/STATUS Sat Apr 18 04:00:42 2015 @@ -38,19 +38,6 @@ Veto-blocked changes: Approved changes: ================= - * r1663671, r1666832 - Resolve an assertion on a bad update report involving incomplete status - Justification: - The tree conflict detection logic in the update editor wasn't - designed to handle BASE adds, where the is an existing basenode. This - patch makes the update logic handling properly handle this bad state - for incomplete nodes, like it already does for status normal nodes. - . - Resolves a reproducable assertion in an restarted checkout against - github. - Votes: - +1: rhuijben, stefan2, brane - * r1664035 Keep track of changes when a file external is replace by a real file Justification: Modified: subversion/branches/1.9.x/subversion/libsvn_wc/update_editor.c URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/libsvn_wc/update_editor.c?rev=1674437&r1=1674436&r2=1674437&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/libsvn_wc/update_editor.c (original) +++ subversion/branches/1.9.x/subversion/libsvn_wc/update_editor.c Sat Apr 18 04:00:42 2015 @@ -1936,9 +1936,15 @@ add_directory(const char *path, SVN_ERR_ASSERT(conflicted); versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */ } - else if (status == svn_wc__db_status_normal) + else if (status == svn_wc__db_status_normal + || status == svn_wc__db_status_incomplete) { - if (wc_kind == svn_node_dir) + svn_boolean_t root; + + SVN_ERR(svn_wc__db_is_wcroot(&root, eb->db, db->local_abspath, + scratch_pool)); + + if (root) { /* !! We found the root of a working copy obstructing the wc !! @@ -1950,9 +1956,16 @@ add_directory(const char *path, resolved. Note that svn_wc__db_base_add_not_present_node() explicitly adds the node into the parent's node database. */ - svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, db->name), + svn_hash_sets(pb->not_present_nodes, + apr_pstrdup(pb->pool, db->name), svn_node_kind_to_word(svn_node_dir)); } + else if (wc_kind == svn_node_dir) + { + /* We have an editor violation. Github sometimes does this + in its subversion compatibility code, when changing the + depth of a working copy, or on updates from incomplete */ + } else { /* We found a file external occupating the place we need in BASE. @@ -3110,20 +3123,35 @@ add_file(const char *path, SVN_ERR_ASSERT(conflicted); versioned_locally_and_present = FALSE; /* Tree conflict ACTUAL-only node */ } - else if (status == svn_wc__db_status_normal) + else if (status == svn_wc__db_status_normal + || status == svn_wc__db_status_incomplete) { - if (wc_kind == svn_node_dir) + svn_boolean_t root; + + SVN_ERR(svn_wc__db_is_wcroot(&root, eb->db, fb->local_abspath, + scratch_pool)); + + if (root) { /* !! We found the root of a working copy obstructing the wc !! If the directory would be part of our own working copy then - we wouldn't have been called as an add_file(). + we wouldn't have been called as an add_directory(). The only thing we can do is add a not-present node, to allow a future update to bring in the new files when the problem is - resolved. */ - svn_hash_sets(pb->not_present_nodes, apr_pstrdup(pb->pool, fb->name), - svn_node_kind_to_word(svn_node_file)); + resolved. Note that svn_wc__db_base_add_not_present_node() + explicitly adds the node into the parent's node database. */ + + svn_hash_sets(pb->not_present_nodes, + apr_pstrdup(pb->pool, fb->name), + svn_node_kind_to_word(svn_node_dir)); + } + else if (wc_kind == svn_node_dir) + { + /* We have an editor violation. Github sometimes does this + in its subversion compatibility code, when changing the + depth of a working copy, or on updates from incomplete */ } else {