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/17 00:15:48 UTC
svn commit: r1434476 - in /subversion/trunk/subversion:
libsvn_client/blame.c tests/cmdline/blame_tests.py
Author: rhuijben
Date: Wed Jan 16 23:15:48 2013
New Revision: 1434476
URL: http://svn.apache.org/viewvc?rev=1434476&view=rev
Log:
Resolve issue #4034, 'blame on files with non-native eol-style sees every line
as modified'.
* subversion/libsvn_client/blame.c
(svn_client_blame5): Normalize to '\n' when eol style is native, but in all
other cases normalize to the expected eol style.
* subversion/tests/cmdline/blame_tests.py
(blame_eol_handling): Remove XFail marker. Use some helper variables
to avoid duplicated code.
Modified:
subversion/trunk/subversion/libsvn_client/blame.c
subversion/trunk/subversion/tests/cmdline/blame_tests.py
Modified: subversion/trunk/subversion/libsvn_client/blame.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/blame.c?rev=1434476&r1=1434475&r2=1434476&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/blame.c (original)
+++ subversion/trunk/subversion/libsvn_client/blame.c Wed Jan 16 23:15:48 2013
@@ -685,13 +685,31 @@ svn_client_blame5(const char *target,
svn_stream_t *wcfile;
svn_stream_t *tempfile;
svn_opt_revision_t rev;
-
+ svn_boolean_t normalize_eols = FALSE;
const char *temppath;
+ if (status->prop_status != svn_wc_status_none)
+ {
+ const svn_string_t *eol_style;
+ SVN_ERR(svn_wc_prop_get2(&eol_style, ctx->wc_ctx,
+ target_abspath_or_url,
+ SVN_PROP_EOL_STYLE,
+ pool, pool));
+
+ if (eol_style)
+ {
+ svn_subst_eol_style_t style;
+ const char *eol;
+ svn_subst_eol_style_from_value(&style, &eol, eol_style->data);
+
+ normalize_eols = (style == svn_subst_eol_style_native);
+ }
+ }
+
rev.kind = svn_opt_revision_working;
SVN_ERR(svn_client__get_normalized_stream(&wcfile, ctx->wc_ctx,
target_abspath_or_url, &rev,
- FALSE, TRUE,
+ FALSE, normalize_eols,
ctx->cancel_func,
ctx->cancel_baton,
pool, pool));
Modified: subversion/trunk/subversion/tests/cmdline/blame_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/blame_tests.py?rev=1434476&r1=1434475&r2=1434476&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/blame_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/blame_tests.py Wed Jan 16 23:15:48 2013
@@ -859,7 +859,6 @@ def blame_multiple_targets(sbox):
multiple_wc_targets()
multiple_url_targets()
-@XFail()
@Issue(4034)
def blame_eol_handling(sbox):
"blame it on the eol handling"
@@ -879,38 +878,30 @@ def blame_eol_handling(sbox):
f1 = sbox.ospath('blame-%s' % prop)
f2 = sbox.ospath('blame-%s-prop' % prop)
- svntest.main.file_write(f1, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 3 ' + eol +
- 'line 4 ' + eol +
- 'line 5 ' + eol, mode='wb')
-
- svntest.main.file_write(f2, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 3 ' + eol +
- 'line 4 ' + eol +
- 'line 5 ' + eol, mode='wb')
+ file_data = 'line 1 ' + eol + \
+ 'line 2 ' + eol + \
+ 'line 3 ' + eol + \
+ 'line 4 ' + eol + \
+ 'line 5 ' + eol
+
+ svntest.main.file_write(f1, file_data, mode='wb')
+ svntest.main.file_write(f2, file_data, mode='wb')
sbox.simple_add('blame-%s' % prop,
'blame-%s-prop' % prop)
sbox.simple_propset('svn:eol-style', prop, 'blame-%s-prop' % prop)
sbox.simple_commit()
- svntest.main.file_write(f1, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 2a' + eol +
- 'line 3 ' + eol +
- 'line 4 ' + eol +
- 'line 4a' + eol +
- 'line 5 ' + eol, mode='wb')
-
- svntest.main.file_write(f2, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 2a' + eol +
- 'line 3 ' + eol +
- 'line 4 ' + eol +
- 'line 4a' + eol +
- 'line 5 ' + eol, mode='wb')
+ file_data = 'line 1 ' + eol + \
+ 'line 2 ' + eol + \
+ 'line 2a' + eol + \
+ 'line 3 ' + eol + \
+ 'line 4 ' + eol + \
+ 'line 4a' + eol + \
+ 'line 5 ' + eol
+
+ svntest.main.file_write(f1, file_data, mode='wb')
+ svntest.main.file_write(f2, file_data, mode='wb')
sbox.simple_commit()
@@ -930,23 +921,17 @@ def blame_eol_handling(sbox):
svntest.actions.run_and_verify_svn(f2 + '-base', expected_output, [],
'blame', f2)
- svntest.main.file_write(f1, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 2a' + eol +
- 'line 3 ' + eol +
- 'line 3b' + eol +
- 'line 4 ' + eol +
- 'line 4a' + eol +
- 'line 5 ' + eol, mode='wb')
-
- svntest.main.file_write(f2, 'line 1 ' + eol +
- 'line 2 ' + eol +
- 'line 2a' + eol +
- 'line 3 ' + eol +
- 'line 3b' + eol +
- 'line 4 ' + eol +
- 'line 4a' + eol +
- 'line 5 ' + eol, mode='wb')
+ file_data = 'line 1 ' + eol + \
+ 'line 2 ' + eol + \
+ 'line 2a' + eol + \
+ 'line 3 ' + eol + \
+ 'line 3b' + eol + \
+ 'line 4 ' + eol + \
+ 'line 4a' + eol + \
+ 'line 5 ' + eol
+
+ svntest.main.file_write(f1, file_data, mode='wb')
+ svntest.main.file_write(f2, file_data, mode='wb')
expected_output = [
' %d jrandom line 1 \n' % rev,