You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/01/03 17:05:38 UTC
svn commit: r1428426 - in /subversion/trunk/subversion: libsvn_client/diff.c
tests/cmdline/diff_tests.py
Author: rhuijben
Date: Thu Jan 3 16:05:38 2013
New Revision: 1428426
URL: http://svn.apache.org/viewvc?rev=1428426&view=rev
Log:
Enable the arbritrary file diff support for 'svn diff --summarize'.
* subversion/libsvn_client/diff.c
(do_diff_summarize): Handle working-working diffs using the new diff_local
handling.
* subversion/tests/cmdline/diff_tests.py
(diff_arbitrary_same): New test.
(test_list): Add test.
Modified:
subversion/trunk/subversion/libsvn_client/diff.c
subversion/trunk/subversion/tests/cmdline/diff_tests.py
Modified: subversion/trunk/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/diff.c?rev=1428426&r1=1428425&r2=1428426&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/diff.c (original)
+++ subversion/trunk/subversion/libsvn_client/diff.c Thu Jan 3 16:05:38 2013
@@ -2710,11 +2710,36 @@ do_diff_summarize(svn_client_diff_summar
peg_revision, depth, ignore_ancestry,
pool);
else if (! is_repos1 && ! is_repos2)
- return diff_summarize_wc_wc(summarize_func, summarize_baton,
- path_or_url1, revision1,
- path_or_url2, revision2,
- depth, ignore_ancestry,
- changelists, ctx, pool);
+ {
+ if (revision1->kind == svn_opt_revision_working
+ && revision2->kind == svn_opt_revision_working)
+ {
+ const char *abspath1;
+ const char *abspath2;
+ svn_wc_diff_callbacks4_t *callbacks;
+ void *callback_baton;
+
+ SVN_ERR(svn_dirent_get_absolute(&abspath1, path_or_url1, pool));
+ SVN_ERR(svn_dirent_get_absolute(&abspath2, path_or_url2, pool));
+
+ SVN_ERR(svn_client__get_diff_summarize_callbacks(
+ &callbacks, &callback_baton, path_or_url1,
+ summarize_func, summarize_baton, pool));
+
+ SVN_ERR(svn_client__arbitrary_nodes_diff(abspath1, abspath2,
+ callbacks,
+ callback_baton,
+ ctx, pool));
+ }
+ else
+ SVN_ERR(diff_summarize_wc_wc(summarize_func, summarize_baton,
+ path_or_url1, revision1,
+ path_or_url2, revision2,
+ depth, ignore_ancestry,
+ changelists, ctx, pool));
+
+ return SVN_NO_ERROR;
+ }
else
return unsupported_diff_error(
svn_error_create(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
Modified: subversion/trunk/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/diff_tests.py?rev=1428426&r1=1428425&r2=1428426&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/diff_tests.py Thu Jan 3 16:05:38 2013
@@ -4123,6 +4123,28 @@ def diff_properties_no_newline(sbox):
os.chdir(old_cwd)
+def diff_arbitrary_same(sbox):
+ "diff arbitrary files and dirs but same"
+
+ sbox.build(read_only = True)
+
+ sbox.simple_propset('k', 'v', 'A', 'A/mu', 'A/D/G/pi')
+
+ svntest.main.file_write(sbox.ospath('A/mu'), "new mu")
+
+ sbox.simple_copy('A', 'A2')
+
+ svntest.actions.run_and_verify_svn(None, [], [],
+ 'diff',
+ '--old', sbox.ospath('A'),
+ '--new', sbox.ospath('A2'))
+
+ svntest.actions.run_and_verify_svn(None, [], [],
+ 'diff', '--summarize',
+ '--old', sbox.ospath('A'),
+ '--new', sbox.ospath('A2'))
+
+
########################################################################
#Run the tests
@@ -4195,6 +4217,7 @@ test_list = [ None,
diff_arbitrary_files_and_dirs,
diff_properties_only,
diff_properties_no_newline,
+ diff_arbitrary_same,
]
if __name__ == '__main__':