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 2013/01/22 14:25:17 UTC
svn commit: r1436902 - in /subversion/branches/ev2-export: ./
subversion/libsvn_ra_serf/ subversion/libsvn_subr/ subversion/libsvn_wc/
subversion/svn/ subversion/svnserve/ subversion/tests/cmdline/
subversion/tests/libsvn_diff/ tools/dev/ tools/server-...
Author: hwright
Date: Tue Jan 22 13:25:17 2013
New Revision: 1436902
URL: http://svn.apache.org/viewvc?rev=1436902&view=rev
Log:
On the ev2-export branch:
Bring up-to-date with trunk. This picks up fixes for merge test 133.
Modified:
subversion/branches/ev2-export/ (props changed)
subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c
subversion/branches/ev2-export/subversion/libsvn_subr/sqlite3wrapper.c (props changed)
subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c
subversion/branches/ev2-export/subversion/svn/notify.c
subversion/branches/ev2-export/subversion/svnserve/svnserve.c
subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c
subversion/branches/ev2-export/tools/dev/fsfs-access-map.c (props changed)
subversion/branches/ev2-export/tools/dev/fsfs-reorg.c (props changed)
subversion/branches/ev2-export/tools/server-side/fsfs-stats.c (props changed)
Propchange: subversion/branches/ev2-export/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1436684-1436886
Modified: subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_ra_serf/update.c Tue Jan 22 13:25:17 2013
@@ -2738,6 +2738,28 @@ create_update_report_body(serf_bucket_t
return SVN_NO_ERROR;
}
+/* Serf callback to setup update request headers. */
+static svn_error_t *
+setup_update_report_headers(serf_bucket_t *headers,
+ void *baton,
+ apr_pool_t *pool)
+{
+ report_context_t *report = baton;
+
+ if (report->sess->using_compression)
+ {
+ serf_bucket_headers_setn(headers, "Accept-Encoding",
+ "gzip;svndiff1;q=0.9,svndiff;q=0.8");
+ }
+ else
+ {
+ serf_bucket_headers_setn(headers, "Accept-Encoding",
+ "svndiff1;q=0.9,svndiff;q=0.8");
+ }
+
+ return SVN_NO_ERROR;
+}
+
static svn_error_t *
finish_report(void *report_baton,
apr_pool_t *pool)
@@ -2783,6 +2805,9 @@ finish_report(void *report_baton,
handler->body_delegate = create_update_report_body;
handler->body_delegate_baton = report;
handler->body_type = "text/xml";
+ handler->custom_accept_encoding = TRUE;
+ handler->header_delegate = setup_update_report_headers;
+ handler->header_delegate_baton = report;
handler->conn = sess->conns[0];
handler->session = sess;
Propchange: subversion/branches/ev2-export/subversion/libsvn_subr/sqlite3wrapper.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/ev2-export/subversion/libsvn_wc/update_editor.c Tue Jan 22 13:25:17 2013
@@ -4125,11 +4125,17 @@ close_file(void *file_baton,
and we should likewise remove our cached copy of it. */
if (! strcmp(prop->name, SVN_PROP_ENTRY_LOCK_TOKEN))
{
- SVN_ERR_ASSERT(prop->value == NULL);
- SVN_ERR(svn_wc__db_lock_remove(eb->db, fb->local_abspath,
- scratch_pool));
+ /* If we lose the lock, but not because we are switching to
+ another url, remove the state lock from the wc */
+ if (! eb->switch_relpath
+ || strcmp(fb->new_relpath, fb->old_repos_relpath) == 0)
+ {
+ SVN_ERR_ASSERT(prop->value == NULL);
+ SVN_ERR(svn_wc__db_lock_remove(eb->db, fb->local_abspath,
+ scratch_pool));
- lock_state = svn_wc_notify_lock_state_unlocked;
+ lock_state = svn_wc_notify_lock_state_unlocked;
+ }
break;
}
}
Modified: subversion/branches/ev2-export/subversion/svn/notify.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svn/notify.c?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svn/notify.c (original)
+++ subversion/branches/ev2-export/subversion/svn/notify.c Tue Jan 22 13:25:17 2013
@@ -346,13 +346,14 @@ notify(void *baton, const svn_wc_notify_
if (n->hunk_matched_line > n->hunk_original_start)
{
- off = n->hunk_matched_line - n->hunk_original_start;
- minus = "";
-
/* If we are patching from the start of an empty file,
it is nicer to show offset 0 */
if (n->hunk_original_start == 0 && n->hunk_matched_line == 1)
off = 0; /* No offset, just adding */
+ else
+ off = n->hunk_matched_line - n->hunk_original_start;
+
+ minus = "";
}
else
{
Modified: subversion/branches/ev2-export/subversion/svnserve/svnserve.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/svnserve/svnserve.c?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/svnserve/svnserve.c (original)
+++ subversion/branches/ev2-export/subversion/svnserve/svnserve.c Tue Jan 22 13:25:17 2013
@@ -169,11 +169,11 @@ static const apr_getopt_option_t svnserv
N_("read configuration from file ARG")},
{"listen-port", SVNSERVE_OPT_LISTEN_PORT, 1,
#ifdef WIN32
- N_("listen port. The default port is " APR_STRINGIFY(SVN_RA_SVN_PORT) ".\n"
+ N_("listen port. The default port is 3690.\n"
" "
"[mode: daemon, service, listen-once]")},
#else
- N_("listen port. The default port is " APR_STRINGIFY(SVN_RA_SVN_PORT) ".\n"
+ N_("listen port. The default port is 3690.\n"
" "
"[mode: daemon, listen-once]")},
#endif
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/lock_tests.py Tue Jan 22 13:25:17 2013
@@ -1708,6 +1708,86 @@ def lock_invalid_token(sbox):
".*scheme.*'opaquelocktoken'", 0,
'lock', '-m', '', file_path)
+@Issue(3105)
+def lock_multi_wc(sbox):
+ "obtain locks in multiple working copies in one go"
+
+ sbox.build()
+
+ sbox2 = sbox.clone_dependent(copy_wc=True)
+
+ wc_name = os.path.basename(sbox.wc_dir)
+ wc2_name = os.path.basename(sbox2.wc_dir)
+
+ expected_output = svntest.verify.UnorderedOutput([
+ '\'%s\' locked by user \'jrandom\'.\n' % os.path.join(wc_name, 'iota'),
+ '\'%s\' locked by user \'jrandom\'.\n' % os.path.join(wc2_name, 'A', 'mu'),
+ ])
+
+ svntest.actions.run_and_verify_svn(None, expected_output, [],
+ 'lock', sbox.ospath('iota'),
+ sbox2.ospath('A/mu'))
+
+ expected_output = svntest.verify.UnorderedOutput([
+ '\'%s\' unlocked.\n' % os.path.join(wc_name, 'iota'),
+ '\'%s\' unlocked.\n' % os.path.join(wc2_name, 'A', 'mu'),
+ ])
+ svntest.actions.run_and_verify_svn(None, expected_output, [],
+ 'unlock', sbox.ospath('iota'),
+ sbox2.ospath('A/mu'))
+
+@Issue(3378)
+def locks_stick_over_switch(sbox):
+ "locks are kept alive over switching"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ repo_url = sbox.repo_url
+
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'cp', sbox.ospath('A'), repo_url + '/AA',
+ '-m', '')
+
+ expected_output = svntest.verify.UnorderedOutput([
+ '\'iota\' locked by user \'jrandom\'.\n',
+ '\'%s\' locked by user \'jrandom\'.\n' % os.path.join('A', 'D', 'H', 'chi'),
+ '\'%s\' locked by user \'jrandom\'.\n' % os.path.join('A', 'mu'),
+ ])
+ svntest.actions.run_and_verify_svn(None, expected_output, [],
+ 'lock', sbox.ospath('A/D/H/chi'),
+ sbox.ospath('A/mu'),
+ sbox.ospath('iota'))
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('A/D/H/chi', 'A/mu', 'iota', writelocked='K')
+
+ # Make sure the file is still locked
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+ expected_output = svntest.wc.State(wc_dir, {
+ })
+
+ expected_status.tweak(wc_rev=2)
+ expected_status.tweak('', wc_rev=1)
+ expected_status.tweak('iota', writelocked='K', wc_rev=1)
+
+ switched_status = expected_status.copy()
+ switched_status.tweak(writelocked=None)
+ switched_status.tweak('iota', writelocked='K')
+ switched_status.tweak('A', switched='S')
+
+ svntest.actions.run_and_verify_switch(wc_dir, sbox.ospath('A'),
+ repo_url + '/AA',
+ expected_output, None, switched_status)
+
+ # And now switch back to verify that the locks reappear
+ expected_output = svntest.wc.State(wc_dir, {
+ })
+ svntest.actions.run_and_verify_switch(wc_dir, sbox.ospath('A'),
+ repo_url + '/A',
+ expected_output, None, expected_status)
+
+
########################################################################
# Run the tests
@@ -1757,6 +1837,8 @@ test_list = [ None,
update_locked_deleted,
block_unlock_if_pre_unlock_hook_fails,
lock_invalid_token,
+ lock_multi_wc,
+ locks_stick_over_switch,
]
if __name__ == '__main__':
Modified: subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/ev2-export/subversion/tests/cmdline/merge_tests.py Tue Jan 22 13:25:17 2013
@@ -18011,7 +18011,8 @@ def merge_target_selection(sbox):
sbox.simple_commit()
# r4
- svntest.main.file_write(sbox.ospath('dir/binary-file'), '\5\4\3\2\1')
+ svntest.main.file_write(sbox.ospath('dir/binary-file'),
+ '\9\8\7\6\5\4\3\2\1')
sbox.simple_commit()
sbox.simple_update()
Modified: subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c?rev=1436902&r1=1436901&r2=1436902&view=diff
==============================================================================
--- subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c (original)
+++ subversion/branches/ev2-export/subversion/tests/libsvn_diff/diff-diff3-test.c Tue Jan 22 13:25:17 2013
@@ -76,16 +76,14 @@ make_random_file(const char *filename,
apr_pool_t *pool)
{
apr_file_t *file;
- apr_status_t status;
int num_lines;
num_lines = range_rand(min_lines, max_lines);
- status = apr_file_open(&file, filename,
- APR_WRITE | APR_CREATE | APR_TRUNCATE, APR_OS_DEFAULT,
- pool);
- if (status)
- return svn_error_createf(status, NULL, "failed to open '%s'", filename);
+ SVN_ERR(svn_io_file_open(&file, filename,
+ APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_OS_DEFAULT,
+ pool));
while (num_lines--)
{
@@ -100,9 +98,7 @@ make_random_file(const char *filename,
apr_file_printf(file, "line %d line %d line %d", x, x, x);
}
- status = apr_file_close(file);
- if (status)
- return svn_error_createf(status, NULL, "failed to close '%s'", filename);
+ SVN_ERR(svn_io_file_close(file, pool));
return SVN_NO_ERROR;
}
@@ -117,19 +113,15 @@ make_file(const char *filename,
apr_file_t *file;
apr_status_t status;
- status = apr_file_open(&file, filename,
- APR_WRITE | APR_CREATE | APR_TRUNCATE, APR_OS_DEFAULT,
- pool);
- if (status)
- return svn_error_createf(status, NULL, "failed to open '%s'", filename);
+ SVN_ERR(svn_io_file_open(&file, filename,
+ APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_OS_DEFAULT, pool));
status = apr_file_write_full(file, contents, strlen(contents), NULL);
if (status)
return svn_error_createf(status, NULL, "failed to write '%s'", filename);
- status = apr_file_close(file);
- if (status)
- return svn_error_createf(status, NULL, "failed to close '%s'", filename);
+ SVN_ERR(svn_io_file_close(file, pool));
return SVN_NO_ERROR;
}
@@ -159,7 +151,6 @@ three_way_merge(const char *filename1,
svn_diff_t *diff;
apr_file_t *output;
svn_stream_t *ostream;
- apr_status_t status;
svn_stringbuf_t *actual;
char *merge_name = apr_psprintf(pool, "merge-%s-%s-%s",
filename1, filename2, filename3);
@@ -199,34 +190,29 @@ three_way_merge(const char *filename1,
SVN_ERR(svn_diff_file_diff3_2(&diff, filename1, filename2, filename3,
options, pool));
- status = apr_file_open(&output, merge_name,
- APR_WRITE | APR_CREATE | APR_TRUNCATE, APR_OS_DEFAULT,
- pool);
- if (status)
- return svn_error_createf(status, NULL, "failed to open '%s'", merge_name);
+ SVN_ERR(svn_io_file_open(&output, merge_name,
+ APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_OS_DEFAULT, pool));
- ostream = svn_stream_from_aprfile(output, pool);
+ ostream = svn_stream_from_aprfile2(output, FALSE, pool);
SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
filename1, filename2, filename3,
NULL, NULL, NULL, NULL,
style,
pool));
SVN_ERR(svn_stream_close(ostream));
- status = apr_file_close(output);
- if (status)
- return svn_error_createf(status, NULL, "failed to close '%s'", merge_name);
- SVN_ERR(svn_stringbuf_from_file(&actual, merge_name, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&actual, merge_name, pool));
if (strcmp(actual->data, expected))
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
"failed merging diff '%s' to '%s' into '%s'",
filename1, filename2, filename3);
- SVN_ERR(svn_io_remove_file(filename1, pool));
+ SVN_ERR(svn_io_remove_file2(filename1, TRUE, pool));
if (strcmp(filename1, filename2))
- SVN_ERR(svn_io_remove_file(filename2, pool));
+ SVN_ERR(svn_io_remove_file2(filename2, TRUE, pool));
if (strcmp(filename1, filename3) && strcmp(filename2, filename3))
- SVN_ERR(svn_io_remove_file(filename3, pool));
- SVN_ERR(svn_io_remove_file(merge_name, pool));
+ SVN_ERR(svn_io_remove_file2(filename3, TRUE, pool));
+ SVN_ERR(svn_io_remove_file2(merge_name, TRUE, pool));
return SVN_NO_ERROR;
}
@@ -252,7 +238,6 @@ two_way_diff(const char *filename1,
svn_diff_t *diff;
apr_file_t *output;
svn_stream_t *ostream;
- apr_status_t status;
svn_stringbuf_t *actual;
char *diff_name = apr_psprintf(pool, "diff-%s-%s", filename1, filename2);
@@ -285,26 +270,23 @@ two_way_diff(const char *filename1,
/* Check that two-way diff between contents1 and contents2 produces
expected output. */
SVN_ERR(svn_diff_file_diff_2(&diff, filename1, filename2, options, pool));
- status = apr_file_open(&output, diff_name,
- APR_WRITE | APR_CREATE | APR_TRUNCATE, APR_OS_DEFAULT,
- pool);
- if (status)
- return svn_error_createf(status, NULL, "failed to open '%s'", diff_name);
- ostream = svn_stream_from_aprfile(output, pool);
+ SVN_ERR(svn_io_file_open(&output, diff_name,
+ APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_OS_DEFAULT, pool));
+
+ ostream = svn_stream_from_aprfile2(output, FALSE, pool);
SVN_ERR(svn_diff_file_output_unified2(ostream, diff,
filename1, filename2,
filename1, filename2,
SVN_APR_LOCALE_CHARSET, pool));
SVN_ERR(svn_stream_close(ostream));
- status = apr_file_close(output);
- if (status)
- return svn_error_createf(status, NULL, "failed to close '%s'", diff_name);
- SVN_ERR(svn_stringbuf_from_file(&actual, diff_name, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&actual, diff_name, pool));
if (strcmp(actual->data, expected))
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
- "failed comparing '%s' and '%s'",
+ "failed comparing '%s' and '%s'"
+ " (memory and file results are different)",
filename1, filename2);
/* May as well do the trivial merges while we are here */
@@ -317,7 +299,7 @@ two_way_diff(const char *filename1,
svn_diff_conflict_display_modified_latest,
pool));
- SVN_ERR(svn_io_remove_file(diff_name, pool));
+ SVN_ERR(svn_io_remove_file2(diff_name, TRUE, pool));
return SVN_NO_ERROR;
}
@@ -373,14 +355,11 @@ make_random_merge_file(const char *filen
apr_pool_t *pool)
{
apr_file_t *file;
- apr_status_t status;
int i;
- status = apr_file_open(&file, filename,
- APR_WRITE | APR_CREATE | APR_TRUNCATE, APR_OS_DEFAULT,
- pool);
- if (status)
- return svn_error_createf(status, NULL, "failed to open '%s'", filename);
+ SVN_ERR(svn_io_file_open(&file, filename,
+ APR_WRITE | APR_CREATE | APR_TRUNCATE,
+ APR_OS_DEFAULT, pool));
for (i = 0; i < num_lines; ++i)
{
@@ -413,9 +392,7 @@ make_random_merge_file(const char *filen
}
}
- status = apr_file_close(file);
- if (status)
- return svn_error_createf(status, NULL, "failed to close '%s'", filename);
+ SVN_ERR(svn_io_file_close(file, pool));
return SVN_NO_ERROR;
}
@@ -2193,8 +2170,8 @@ random_trivial_merge(apr_pool_t *pool)
min_lines, max_lines, var_lines, block_lines,
i % 2, subpool));
- SVN_ERR(svn_stringbuf_from_file(&contents1, filename1, subpool));
- SVN_ERR(svn_stringbuf_from_file(&contents2, filename2, subpool));
+ SVN_ERR(svn_stringbuf_from_file2(&contents1, filename1, subpool));
+ SVN_ERR(svn_stringbuf_from_file2(&contents2, filename2, subpool));
SVN_ERR(three_way_merge(filename1, filename2, filename1,
contents1->data, contents2->data,
@@ -2262,10 +2239,10 @@ random_three_way_merge(apr_pool_t *pool)
SVN_ERR(make_random_merge_file(filename4, num_lines, mrg_lines,
num_src + num_dst, pool));
- SVN_ERR(svn_stringbuf_from_file(&original, filename1, pool));
- SVN_ERR(svn_stringbuf_from_file(&modified1, filename2, pool));
- SVN_ERR(svn_stringbuf_from_file(&modified2, filename3, pool));
- SVN_ERR(svn_stringbuf_from_file(&combined, filename4, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&original, filename1, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&modified1, filename2, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&modified2, filename3, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&combined, filename4, pool));
SVN_ERR(three_way_merge(filename1, filename2, filename3,
original->data, modified1->data,
@@ -2278,7 +2255,7 @@ random_three_way_merge(apr_pool_t *pool)
svn_diff_conflict_display_modified_latest,
subpool));
- SVN_ERR(svn_io_remove_file(filename4, pool));
+ SVN_ERR(svn_io_remove_file2(filename4, TRUE, pool));
svn_pool_clear(subpool);
}
@@ -2335,10 +2312,10 @@ merge_with_part_already_present(apr_pool
SVN_ERR(make_random_merge_file(filename4, num_lines, mrg_lines,
num_src + num_dst / 2, pool));
- SVN_ERR(svn_stringbuf_from_file(&original, filename1, pool));
- SVN_ERR(svn_stringbuf_from_file(&modified1, filename2, pool));
- SVN_ERR(svn_stringbuf_from_file(&modified2, filename3, pool));
- SVN_ERR(svn_stringbuf_from_file(&combined, filename4, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&original, filename1, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&modified1, filename2, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&modified2, filename3, pool));
+ SVN_ERR(svn_stringbuf_from_file2(&combined, filename4, pool));
SVN_ERR(three_way_merge(filename1, filename2, filename3,
original->data, modified1->data,
@@ -2351,7 +2328,7 @@ merge_with_part_already_present(apr_pool
svn_diff_conflict_display_modified_latest,
subpool));
- SVN_ERR(svn_io_remove_file(filename4, pool));
+ SVN_ERR(svn_io_remove_file2(filename4, TRUE, pool));
svn_pool_clear(subpool);
}
@@ -2617,6 +2594,130 @@ test_token_compare(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_issue_3362(apr_pool_t *pool)
+{
+ svn_diff_file_options_t *diff_opts = svn_diff_file_options_create(pool);
+
+ SVN_ERR(two_way_diff("issue-3362-1",
+ "issue-3362-2",
+ /* File 1 */
+ "line_1\n"
+ "line_2\n"
+ "line_3\n"
+ "line_4\n"
+ "line_5\n"
+ "line_6\n"
+ "line_7\n"
+ "line_8\n"
+ "line_9\n"
+ "line_10\n"
+ "line_11\n"
+ "line_12\n"
+ "line_13\n"
+ "line_14\n"
+ "line_15\n"
+ "line_16\n"
+ "line_17\n"
+ "line_18\n"
+ "line_19\n"
+ "line_20\n"
+ "line_21\n"
+ "line_22\n"
+ "line_23\n"
+ "line_24\n"
+ "line_25\n"
+ "line_26\n"
+ "line_27\n"
+ "line_28\n"
+ "line_29\n"
+ "line_30\n",
+ /* File 2 */
+ "line_1a\n"
+ "line_2a\n"
+ "line_3a\n"
+ "line_1\n"
+ "line_2\n"
+ "line_3\n"
+ "line_4\n"
+ "line_5a\n"
+ "line_6b\n"
+ "line_7c\n"
+ "line_8\n"
+ "line_9\n"
+ "line_10\n"
+ "line_11a\n"
+ "line_11b\n"
+ "line_11c\n"
+ "line_12\n"
+ "line_13\n"
+ "line_14\n"
+ "line_15\n"
+ "line_16\n"
+ "line_17\n"
+ "line_18\n"
+ "line_19a\n"
+ "line_19b\n"
+ "line_19c\n"
+ "line_20\n"
+ "line_21\n"
+ "line_22\n"
+ "line_23\n"
+ "line_24\n"
+ "line_25\n"
+ "line_26\n"
+ "line_27\n"
+ "line_27a\n",
+ /* Expected */
+ "--- issue-3362-1" APR_EOL_STR
+ "+++ issue-3362-2" APR_EOL_STR
+ "@@ -1,12 +1,17 @@" APR_EOL_STR
+ "+line_1a\n"
+ "+line_2a\n"
+ "+line_3a\n"
+ " line_2\n"
+ " line_3\n"
+ " line_4\n"
+ "-line_5\n"
+ "-line_6\n"
+ "-line_7\n"
+ "+line_5a\n"
+ "+line_6b\n"
+ "+line_7c\n"
+ " line_8\n"
+ " line_9\n"
+ " line_10\n"
+ "-line_11\n"
+ "+line_11a\n"
+ "+line_11b\n"
+ "+line_11c\n"
+ " line_12\n"
+ " line_13\n"
+ "@@ -16,7 +21,9 @@" APR_EOL_STR
+ " line_16\n"
+ " line_17\n"
+ " line_18\n"
+ "-line_19\n"
+ "+line_19a\n"
+ "+line_19b\n"
+ "+line_19c\n"
+ " line_20\n"
+ " line_21\n"
+ " line_22\n"
+ "@@ -25,6 +32,4 @@" APR_EOL_STR
+ " line_25\n"
+ " line_26\n"
+ " line_27\n"
+ "-line_28\n"
+ "-line_29\n"
+ "-line_30\n"
+ "+line_27a\n",
+ diff_opts, pool));
+
+ return SVN_NO_ERROR;
+}
+
+
/* ========================================================================== */
struct svn_test_descriptor_t test_funcs[] =
@@ -2652,5 +2753,7 @@ struct svn_test_descriptor_t test_funcs[
"identical suffix starts at the boundary of a chunk"),
SVN_TEST_PASS2(test_token_compare,
"compare tokes at the chunk boundary"),
+ SVN_TEST_XFAIL2(test_issue_3362,
+ "issue #3362 test"),
SVN_TEST_NULL
};
Propchange: subversion/branches/ev2-export/tools/dev/fsfs-access-map.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/ev2-export/tools/dev/fsfs-reorg.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: subversion/branches/ev2-export/tools/server-side/fsfs-stats.c
------------------------------------------------------------------------------
svn:eol-style = native