Author: rhuijben Date: Sun Apr 19 10:24:15 2015 New Revision: 1674600 URL: http://svn.apache.org/r1674600 Log: Following up on r1674413 and a few more recent incomplete fixes, handle incomplete like status normal in a few more local diff cases.
Note that this patch depends on the copy fix in r1674455, because that fixes the issue I found while writing the original version of this test. * subversion/libsvn_wc/diff_local.c (diff_status_callback): Handle db status incomplete like db status normal. * subversion/tests/cmdline/diff_tests.py (diff_incomplete): New regression test. (test_list): Add diff_incomplete. Modified: subversion/trunk/subversion/libsvn_wc/diff_local.c subversion/trunk/subversion/tests/cmdline/diff_tests.py Modified: subversion/trunk/subversion/libsvn_wc/diff_local.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/diff_local.c?rev=1674600&r1=1674599&r2=1674600&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_wc/diff_local.c (original) +++ subversion/trunk/subversion/libsvn_wc/diff_local.c Sun Apr 19 10:24:15 2015 @@ -281,7 +281,8 @@ diff_status_callback(void *baton, { local_only = TRUE; /* Only report additions */ } - else if (db_status == svn_wc__db_status_normal) + else if (db_status == svn_wc__db_status_normal + || db_status == svn_wc__db_status_incomplete) { /* Simple diff */ base_kind = db_kind; @@ -297,7 +298,8 @@ diff_status_callback(void *baton, eb->db, local_abspath, scratch_pool, scratch_pool)); - if (base_status != svn_wc__db_status_normal) + if (base_status != svn_wc__db_status_normal + && base_status != svn_wc__db_status_incomplete) return SVN_NO_ERROR; } else @@ -312,7 +314,8 @@ diff_status_callback(void *baton, eb->db, local_abspath, scratch_pool, scratch_pool)); - if (base_status != svn_wc__db_status_normal) + if (base_status != svn_wc__db_status_normal + && base_status != svn_wc__db_status_incomplete) local_only = TRUE; else if (base_kind != db_kind || !eb->ignore_ancestry) { Modified: subversion/trunk/subversion/tests/cmdline/diff_tests.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/diff_tests.py?rev=1674600&r1=1674599&r2=1674600&view=diff ============================================================================== --- subversion/trunk/subversion/tests/cmdline/diff_tests.py (original) +++ subversion/trunk/subversion/tests/cmdline/diff_tests.py Sun Apr 19 10:24:15 2015 @@ -4867,6 +4867,59 @@ def diff_summarize_ignore_properties(sbo svntest.actions.run_and_verify_diff_summarize_xml( [], wc_dir, paths, items, props, kinds, wc_dir, '--ignore-properties') +def diff_incomplete(sbox): + "diff incomplete directory" + + sbox.build() + svntest.actions.run_and_verify_svn(None, [], 'rm', sbox.repo_url + '/A', + '-m', '') + + # This works ok + _, out1a, _ = svntest.actions.run_and_verify_svn(None, [], 'diff', + '-r', 'HEAD', + sbox.wc_dir, + '--notice-ancestry') + + _, out1b, _ = svntest.actions.run_and_verify_svn(None, [], 'diff', + sbox.wc_dir, + '--notice-ancestry') + + + svntest.main.run_wc_incomplete_tester(sbox.ospath('A'), 1) + + # And this used to miss certain changes + _, out2a, _ = svntest.actions.run_and_verify_svn(None, [], 'diff', + '-r', 'HEAD', + sbox.wc_dir, + '--notice-ancestry') + + _, out2b, _ = svntest.actions.run_and_verify_svn(None, [], 'diff', + sbox.wc_dir, + '--notice-ancestry') + + # Ordering may be different, but length should match + if len(out1a) != len(out2a): + raise svntest.Failure('Different output when incomplete against repos') + + svntest.verify.compare_and_display_lines('local diff', 'local diff', out1b, + out2b) + + svntest.actions.run_and_verify_svn(None, [], 'cp', + sbox.repo_url + '/A/D/H@1', + sbox.repo_url + '/A', '-m', '') + + + # And add a replacement on top of the incomplete + svntest.actions.run_and_verify_svn(None, [], 'diff', + '-r', 'HEAD', + sbox.wc_dir, + '--notice-ancestry') + + + svntest.actions.run_and_verify_svn(None, [], 'diff', + '-r', 'HEAD', + sbox.wc_dir, + '--notice-ancestry') ######################################################################## #Run the tests @@ -4959,6 +5012,7 @@ test_list = [ None, diff_replaced_moved, diff_local_copied_dir, diff_summarize_ignore_properties, + diff_incomplete, ] if __name__ == '__main__':