Author: svn-role
Date: Sat Apr 14 04:01:12 2012
New Revision: 1326052
URL: http://svn.apache.org/viewvc?rev=1326052&view=rev
Log:
Merge the r1296251 group from trunk:
* r1296251, r1296303, r1297522
Resolve issue 4136, "Deep commit followed by --depth immediates update
triggers checksum failure"
Justification:
User reported regression since 1.7.0
Votes:
+1: stsp, rhuijben, philip
Modified:
subversion/branches/1.7.x/ (props changed)
subversion/branches/1.7.x/STATUS
subversion/branches/1.7.x/subversion/libsvn_wc/adm_crawler.c
subversion/branches/1.7.x/subversion/tests/cmdline/depth_tests.py
Propchange: subversion/branches/1.7.x/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1296251,1296303,1297522
Modified: subversion/branches/1.7.x/STATUS
URL:
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1326052&r1=1326051&r2=1326052&view=diff
==============================================================================
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Sat Apr 14 04:01:12 2012
@@ -142,11 +142,3 @@ Veto-blocked changes:
Approved changes:
=================
-
- * r1296251, r1296303, r1297522
- Resolve issue 4136, "Deep commit followed by --depth immediates update
- triggers checksum failure"
- Justification:
- User reported regression since 1.7.0
- Votes:
- +1: stsp, rhuijben, philip
Modified: subversion/branches/1.7.x/subversion/libsvn_wc/adm_crawler.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_wc/adm_crawler.c?rev=1326052&r1=1326051&r2=1326052&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/1.7.x/subversion/libsvn_wc/adm_crawler.c Sat Apr 14
04:01:12 2012
@@ -495,10 +495,14 @@ report_revisions_and_depths(svn_wc__db_t
{
svn_boolean_t is_incomplete;
svn_boolean_t start_empty;
+ svn_depth_t report_depth = ths->depth;
is_incomplete = (ths->status == svn_wc__db_status_incomplete);
start_empty = is_incomplete;
+ if (!SVN_DEPTH_IS_RECURSIVE(depth))
+ report_depth = svn_depth_empty;
+
/* When a <= 1.6 working copy is upgraded without some of its
subdirectories we miss some information in the database. If we
report the revision as -1, the update editor will receive an
@@ -526,7 +530,7 @@ report_revisions_and_depths(svn_wc__db_t
dir_repos_root,
ths->repos_relpath, iterpool),
ths->revnum,
- ths->depth,
+ report_depth,
start_empty,
ths->lock ? ths->lock->token
: NULL,
@@ -535,7 +539,7 @@ report_revisions_and_depths(svn_wc__db_t
SVN_ERR(reporter->set_path(report_baton,
this_report_relpath,
ths->revnum,
- ths->depth,
+ report_depth,
start_empty,
ths->lock ? ths->lock->token : NULL,
iterpool));
@@ -549,7 +553,7 @@ report_revisions_and_depths(svn_wc__db_t
dir_repos_root,
ths->repos_relpath, iterpool),
ths->revnum,
- ths->depth,
+ report_depth,
start_empty,
ths->lock ? ths->lock->token : NULL,
iterpool));
@@ -573,7 +577,7 @@ report_revisions_and_depths(svn_wc__db_t
SVN_ERR(reporter->set_path(report_baton,
this_report_relpath,
ths->revnum,
- ths->depth,
+ report_depth,
start_empty,
ths->lock ? ths->lock->token : NULL,
iterpool));
Modified: subversion/branches/1.7.x/subversion/tests/cmdline/depth_tests.py
URL:
http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/tests/cmdline/depth_tests.py?rev=1326052&r1=1326051&r2=1326052&view=diff
==============================================================================
--- subversion/branches/1.7.x/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/1.7.x/subversion/tests/cmdline/depth_tests.py Sat Apr
14 04:01:12 2012
@@ -2842,6 +2842,48 @@ def update_below_depth_empty(sbox):
svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output, None,
None, None)
+# Test for issue #4136.
+@Issue(4136)
+def commit_then_immediates_update(sbox):
+ "deep commit followed by update --depth immediates"
+ sbox.build()
+
+ repo_url = sbox.repo_url
+ wc_dir = sbox.wc_dir
+ mu_path = sbox.ospath('A/mu')
+
+ # Modify A/mu and commit the changes.
+ svntest.main.file_write(mu_path, "modified mu\n")
+ expected_output = svntest.wc.State(wc_dir, {
+ 'A/mu' : Item(verb='Sending'),
+ })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('A/mu', wc_rev=2, status=' ')
+ svntest.actions.run_and_verify_commit(wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ wc_dir)
+
+ # Now, update --depth immediates in the root of the working copy.
+ expected_output = svntest.wc.State(wc_dir, { })
+ expected_disk = svntest.main.greek_state.copy()
+ expected_disk.tweak('A/mu', contents="modified mu\n")
+ expected_status = svntest.wc.State(wc_dir, { '' : svntest.wc.StateItem() })
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('', wc_rev=2, status=' ')
+ expected_status.tweak('A', wc_rev=2, status=' ')
+ expected_status.tweak('A/mu', wc_rev=2, status=' ')
+ expected_status.tweak('iota', wc_rev=2, status=' ')
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None, None, None, False,
+ "--depth=immediates", wc_dir)
+
+
+
#----------------------------------------------------------------------
# list all tests here, starting with None:
test_list = [ None,
@@ -2889,6 +2931,7 @@ test_list = [ None,
update_depth_empty_root_of_infinite_children,
sparse_update_with_dash_dash_parents,
update_below_depth_empty,
+ commit_then_immediates_update,
]
if __name__ == "__main__":