You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/08/23 16:42:31 UTC
svn commit: r1160714 - in /subversion/branches/1.7.x: ./
subversion/libsvn_wc/ subversion/tests/cmdline/
subversion/tests/cmdline/upgrade_tests_data/
Author: hwright
Date: Tue Aug 23 14:42:30 2011
New Revision: 1160714
URL: http://svn.apache.org/viewvc?rev=1160714&view=rev
Log:
Merge r1160671, r1160682, r1160704 from trunk:
* r1160671, r1160682, r1160704
Resolve issue #3994, Subversion working copies that contain 'svn lock'-style
locks cannot be upgraded.
Justification:
svn upgrade should not fail on perfectly valid working copies.
Votes:
+1: rhuijben, philip, cmpilato
Added:
subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests_data/upgrade_locked.tar.bz2
- copied unchanged from r1160704, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/upgrade_locked.tar.bz2
Modified:
subversion/branches/1.7.x/ (props changed)
subversion/branches/1.7.x/STATUS
subversion/branches/1.7.x/subversion/libsvn_wc/upgrade.c
subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c
subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.h
subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests.py
Propchange: subversion/branches/1.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 23 14:42:30 2011
@@ -59,4 +59,4 @@
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
/subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152282,1152726,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158193-1158194,1158285,1158288,115
8303,1158309,1158407,1158419,1158421,1158436,1158455,1158616,1158634,1158854,1158893,1159093,1159098,1159101,1159230,1159275,1159686,1159760,1159772
+/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148853,1148877,1148882,1148936,1149105,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151906,1151911,1152129,1152140,1152189-1152190,1152282,1152726,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158193-1158194,1158285,1158288,115
8303,1158309,1158407,1158419,1158421,1158436,1158455,1158616,1158634,1158854,1158893,1159093,1159098,1159101,1159230,1159275,1159686,1159760,1159772,1160671,1160682,1160704
Modified: subversion/branches/1.7.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1160714&r1=1160713&r2=1160714&view=diff
==============================================================================
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Tue Aug 23 14:42:30 2011
@@ -151,11 +151,3 @@ Approved changes:
Votes:
+1: rhuijben, cmpilato
+1 (once tests pass): danielsh
-
- * r1160671, r1160682, r1160704
- Resolve issue #3994, Subversion working copies that contain 'svn lock'-style
- locks cannot be upgraded.
- Justification:
- svn upgrade should not fail on perfectly valid working copies.
- Votes:
- +1: rhuijben, philip, cmpilato
Modified: subversion/branches/1.7.x/subversion/libsvn_wc/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_wc/upgrade.c?rev=1160714&r1=1160713&r2=1160714&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/libsvn_wc/upgrade.c (original)
+++ subversion/branches/1.7.x/subversion/libsvn_wc/upgrade.c Tue Aug 23 14:42:30 2011
@@ -1914,12 +1914,12 @@ svn_wc_upgrade(svn_wc_context_t *wc_ctx,
scratch_pool));
SVN_ERR(svn_wc__ensure_directory(root_adm_abspath, scratch_pool));
- /* Create an empty sqlite database for this directory. */
+ /* Create an empty sqlite database for this directory and store it in DB. */
SVN_ERR(svn_wc__db_upgrade_begin(&data.sdb,
&data.repos_id, &data.wc_id,
- data.root_abspath,
+ db, data.root_abspath,
this_dir->repos, this_dir->uuid,
- scratch_pool, scratch_pool));
+ scratch_pool));
/* Migrate the entries over to the new database.
### We need to think about atomicity here.
@@ -1964,7 +1964,6 @@ svn_wc_upgrade(svn_wc_context_t *wc_ctx,
SVN_ERR(svn_wc__db_wq_add(db, data.root_abspath, work_items, scratch_pool));
SVN_ERR(svn_wc__db_wclock_release(db, data.root_abspath, scratch_pool));
- SVN_ERR(svn_sqlite__close(data.sdb));
SVN_ERR(svn_wc__db_close(db));
/* Renaming the db file is what makes the pre-wcng into a wcng */
Modified: subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c?rev=1160714&r1=1160713&r2=1160714&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.c Tue Aug 23 14:42:30 2011
@@ -9540,16 +9540,30 @@ svn_error_t *
svn_wc__db_upgrade_begin(svn_sqlite__db_t **sdb,
apr_int64_t *repos_id,
apr_int64_t *wc_id,
+ svn_wc__db_t *wc_db,
const char *dir_abspath,
const char *repos_root_url,
const char *repos_uuid,
- apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
- return svn_error_trace(create_db(sdb, repos_id, wc_id, dir_abspath,
- repos_root_url, repos_uuid,
- SDB_FILE,
- result_pool, scratch_pool));
+ svn_wc__db_wcroot_t *wcroot;
+ SVN_ERR(create_db(sdb, repos_id, wc_id, dir_abspath,
+ repos_root_url, repos_uuid,
+ SDB_FILE,
+ wc_db->state_pool, scratch_pool));
+
+ SVN_ERR(svn_wc__db_pdh_create_wcroot(&wcroot,
+ apr_pstrdup(wc_db->state_pool,
+ dir_abspath),
+ *sdb, *wc_id, FORMAT_FROM_SDB,
+ FALSE /* auto-upgrade */,
+ FALSE /* enforce_empty_wq */,
+ wc_db->state_pool, scratch_pool));
+
+ /* The WCROOT is complete. Stash it into DB. */
+ apr_hash_set(wc_db->dir_data, wcroot->abspath, APR_HASH_KEY_STRING, wcroot);
+
+ return SVN_NO_ERROR;
}
Modified: subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.h?rev=1160714&r1=1160713&r2=1160714&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/branches/1.7.x/subversion/libsvn_wc/wc_db.h Tue Aug 23 14:42:30 2011
@@ -2563,14 +2563,20 @@ svn_wc__db_scan_deletion(const char **ba
@{
*/
+/* Create a new wc.db file for LOCAL_DIR_ABSPATH, which is going to be a
+ working copy for the repository REPOS_ROOT_URL with uuid REPOS_UUID.
+ Return the raw sqlite handle, repository id and working copy id
+ and store the database in WC_DB.
+
+ Perform temporary allocations in SCRATCH_POOL. */
svn_error_t *
svn_wc__db_upgrade_begin(svn_sqlite__db_t **sdb,
apr_int64_t *repos_id,
apr_int64_t *wc_id,
+ svn_wc__db_t *wc_db,
const char *local_dir_abspath,
const char *repos_root_url,
const char *repos_uuid,
- apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
Modified: subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests.py?rev=1160714&r1=1160713&r2=1160714&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/1.7.x/subversion/tests/cmdline/upgrade_tests.py Tue Aug 23 14:42:30 2011
@@ -1093,6 +1093,24 @@ def upgrade_with_missing_subdir(sbox):
expected_disk,
expected_status)
+@Issue(3994)
+def upgrade_locked(sbox):
+ "upgrade working copy with locked files"
+
+ replace_sbox_with_tarfile(sbox, 'upgrade_locked.tar.bz2')
+
+ svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+
+ expected_status = svntest.wc.State(sbox.wc_dir,
+ {
+ '' : Item(status=' ', wc_rev=1),
+ 'A' : Item(status='D ', wc_rev=2),
+ 'A/third' : Item(status='D ', writelocked='K', wc_rev=2),
+ 'other' : Item(status='D ', writelocked='K', wc_rev=4),
+ 'iota' : Item(status=' ', writelocked='K', wc_rev=3),
+ })
+
+ run_and_verify_status_no_server(sbox.wc_dir, expected_status)
########################################################################
# Run the tests
@@ -1141,6 +1159,7 @@ test_list = [ None,
add_add_del_del_tc,
add_add_x2,
upgrade_with_missing_subdir,
+ upgrade_locked,
]