You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/11/02 17:45:33 UTC
svn commit: r1712080 [2/2] - in /subversion/branches/move-tracking-2: ./
notes/api-errata/1.9/ subversion/ subversion/include/
subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_fs_fs/
subversion/libsvn_fs_x/ subversion/libsvn_ra_serf/ s...
Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/reporter.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/reporter.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_repos/reporter.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_repos/reporter.c Mon Nov 2 16:45:32 2015
@@ -578,8 +578,8 @@ delta_proplists(report_baton_t *b, svn_r
SVN_ERR(get_source_root(b, &s_root, s_rev));
/* Is this deltification worth our time? */
- SVN_ERR(svn_fs_props_changed(&changed, b->t_root, t_path, s_root,
- s_path, pool));
+ SVN_ERR(svn_fs_props_different(&changed, b->t_root, t_path, s_root,
+ s_path, pool));
if (! changed)
return SVN_NO_ERROR;
Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_repos/repos.c Mon Nov 2 16:45:32 2015
@@ -1175,8 +1175,8 @@ svn_repos_create(svn_repos_t **repos_p,
SVN_ERR(lock_repos(repos, FALSE, FALSE, scratch_pool));
/* Create an environment for the filesystem. */
- if ((err = svn_fs_create(&repos->fs, repos->db_path, fs_config,
- result_pool)))
+ if ((err = svn_fs_create2(&repos->fs, repos->db_path, fs_config,
+ result_pool, scratch_pool)))
{
/* If there was an error making the filesytem, e.g. unknown/supported
* filesystem type. Clean up after ourselves. Yes this is safe because
Modified: subversion/branches/move-tracking-2/subversion/libsvn_repos/rev_hunt.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_repos/rev_hunt.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_repos/rev_hunt.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_repos/rev_hunt.c Mon Nov 2 16:45:32 2015
@@ -1356,6 +1356,7 @@ send_path_revision(struct path_revision
void *delta_baton = NULL;
apr_pool_t *tmp_pool; /* For swapping */
svn_boolean_t contents_changed;
+ svn_boolean_t props_changed;
svn_pool_clear(sb->iterpool);
@@ -1368,23 +1369,61 @@ send_path_revision(struct path_revision
SVN_ERR(svn_fs_revision_root(&root, repos->fs, path_rev->revnum,
sb->iterpool));
- /* Get the file's properties for this revision and compute the diffs. */
- SVN_ERR(svn_fs_node_proplist(&props, root, path_rev->path,
+ /* Check if the props *may* have changed. */
+ if (sb->last_root)
+ {
+ /* We don't use svn_fs_props_different() because it's more
+ * expensive. */
+ SVN_ERR(svn_fs_props_changed(&props_changed,
+ sb->last_root, sb->last_path,
+ root, path_rev->path, sb->iterpool));
+ }
+ else
+ {
+ props_changed = TRUE;
+ }
+
+ /* Calculate actual difference between last and current properties. */
+ if (props_changed)
+ {
+ /* Get the file's properties for this revision and compute the diffs. */
+ SVN_ERR(svn_fs_node_proplist(&props, root, path_rev->path,
sb->iterpool));
- SVN_ERR(svn_prop_diffs(&prop_diffs, props, sb->last_props,
- sb->iterpool));
+ SVN_ERR(svn_prop_diffs(&prop_diffs, props, sb->last_props,
+ sb->iterpool));
+ }
+ else
+ {
+ /* Properties didn't change: copy LAST_PROPS to current POOL. */
+ props = svn_prop_hash_dup(sb->last_props, sb->iterpool);
+ prop_diffs = apr_array_make(sb->iterpool, 0, sizeof(svn_prop_t));
+ }
- /* Check if the contents changed. */
+ /* Check if the contents *may* have changed. */
if (! sb->last_root)
{
/* Special case: In the first revision, we always provide a delta. */
contents_changed = TRUE;
}
+ else if (sb->include_merged_revisions
+ && strcmp(sb->last_path, path_rev->path))
+ {
+ /* ### This is a HACK!!!
+ * Blame -g, in older clients anyways, relies on getting a notification
+ * whenever the path changes - even if there was no content change.
+ *
+ * TODO: A future release should take an extra parameter and depending
+ * on that either always send a text delta or only send it if there
+ * is a difference. */
+ contents_changed = TRUE;
+ }
else
{
- SVN_ERR(svn_fs_contents_changed(&contents_changed, sb->last_root,
- sb->last_path, root, path_rev->path,
- sb->iterpool));
+ /* Did the file contents actually change?
+ * It could e.g. be a property-only change. */
+ SVN_ERR(svn_fs_contents_different(&contents_changed, sb->last_root,
+ sb->last_path, root, path_rev->path,
+ sb->iterpool));
}
/* We have all we need, give to the handler. */
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/base64.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/base64.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/base64.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/base64.c Mon Nov 2 16:45:32 2015
@@ -58,6 +58,7 @@ struct encode_baton {
unsigned char buf[3]; /* Bytes waiting to be encoded */
size_t buflen; /* Number of bytes waiting */
size_t linelen; /* Bytes output so far on this line */
+ svn_boolean_t break_lines;
apr_pool_t *scratch_pool;
};
@@ -214,7 +215,8 @@ encode_data(void *baton, const char *dat
svn_error_t *err = SVN_NO_ERROR;
/* Encode this block of data and write it out. */
- encode_bytes(encoded, data, *len, eb->buf, &eb->buflen, &eb->linelen, TRUE);
+ encode_bytes(encoded, data, *len, eb->buf, &eb->buflen, &eb->linelen,
+ eb->break_lines);
enclen = encoded->len;
if (enclen != 0)
err = svn_stream_write(eb->output, encoded->data, &enclen);
@@ -233,7 +235,8 @@ finish_encoding_data(void *baton)
svn_error_t *err = SVN_NO_ERROR;
/* Encode a partial group at the end if necessary, and write it out. */
- encode_partial_group(encoded, eb->buf, eb->buflen, eb->linelen, TRUE);
+ encode_partial_group(encoded, eb->buf, eb->buflen, eb->linelen,
+ eb->break_lines);
enclen = encoded->len;
if (enclen != 0)
err = svn_stream_write(eb->output, encoded->data, &enclen);
@@ -247,7 +250,9 @@ finish_encoding_data(void *baton)
svn_stream_t *
-svn_base64_encode(svn_stream_t *output, apr_pool_t *pool)
+svn_base64_encode2(svn_stream_t *output,
+ svn_boolean_t break_lines,
+ apr_pool_t *pool)
{
struct encode_baton *eb = apr_palloc(pool, sizeof(*eb));
svn_stream_t *stream;
@@ -255,6 +260,7 @@ svn_base64_encode(svn_stream_t *output,
eb->output = output;
eb->buflen = 0;
eb->linelen = 0;
+ eb->break_lines = break_lines;
eb->scratch_pool = svn_pool_create(pool);
stream = svn_stream_create(eb, pool);
svn_stream_set_write(stream, encode_data);
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c Mon Nov 2 16:45:32 2015
@@ -46,6 +46,7 @@
#include "svn_utf.h"
#include "svn_xml.h"
#include "svn_auth.h"
+#include "svn_base64.h"
#include "opt.h"
#include "auth.h"
@@ -1574,3 +1575,10 @@ svn_cmdline_create_auth_baton(svn_auth_b
cancel_baton,
pool));
}
+
+/*** From base64.c ***/
+svn_stream_t *
+svn_base64_encode(svn_stream_t *output, apr_pool_t *pool)
+{
+ return svn_base64_encode2(output, TRUE, pool);
+}
Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/util.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/util.c (original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/util.c Mon Nov 2 16:45:32 2015
@@ -620,7 +620,7 @@ dav_svn__make_base64_output_stream(apr_b
wb->output = output;
svn_stream_set_write(stream, brigade_write_fn);
- return svn_base64_encode(stream, pool);
+ return svn_base64_encode2(stream, TRUE, pool);
}
void
Modified: subversion/branches/move-tracking-2/subversion/svnbench/null-list-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnbench/null-list-cmd.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnbench/null-list-cmd.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnbench/null-list-cmd.c Mon Nov 2 16:45:32 2015
@@ -48,6 +48,12 @@ struct print_baton {
svn_client_ctx_t *ctx;
};
+/* Field flags required for this function */
+static const apr_uint32_t print_dirent_fields = SVN_DIRENT_KIND;
+static const apr_uint32_t print_dirent_fields_verbose = (
+ SVN_DIRENT_KIND | SVN_DIRENT_SIZE | SVN_DIRENT_TIME |
+ SVN_DIRENT_CREATED_REV | SVN_DIRENT_LAST_AUTHOR);
+
/* This implements the svn_client_list_func2_t API, printing a single
directory entry in text format. */
static svn_error_t *
@@ -100,9 +106,9 @@ svn_cl__null_list(apr_getopt_t *os,
svn_opt_push_implicit_dot_target(targets, pool);
if (opt_state->verbose)
- dirent_fields = SVN_DIRENT_ALL;
+ dirent_fields = print_dirent_fields_verbose;
else
- dirent_fields = SVN_DIRENT_KIND; /* the only thing we actually need... */
+ dirent_fields = print_dirent_fields;
pb.ctx = ctx;
pb.verbose = opt_state->verbose;
Modified: subversion/branches/move-tracking-2/subversion/svnbench/svnbench.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnbench/svnbench.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnbench/svnbench.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnbench/svnbench.c Mon Nov 2 16:45:32 2015
@@ -42,6 +42,7 @@
#include "private/svn_opt_private.h"
#include "private/svn_cmdline_private.h"
+#include "private/svn_string_private.h"
#include "svn_private_config.h"
@@ -337,6 +338,23 @@ signal_handler(int signum)
cancelled = TRUE;
}
+/* Baton for ra_progress_func() callback. */
+typedef struct ra_progress_baton_t
+{
+ apr_off_t bytes_transferred;
+} ra_progress_baton_t;
+
+/* Implements svn_ra_progress_notify_func_t. */
+static void
+ra_progress_func(apr_off_t progress,
+ apr_off_t total,
+ void *baton,
+ apr_pool_t *pool)
+{
+ ra_progress_baton_t *b = baton;
+ b->bytes_transferred = progress;
+}
+
/* Our cancellation callback. */
svn_error_t *
svn_cl__check_cancel(void *baton)
@@ -372,6 +390,7 @@ sub_main(int *exit_code, int argc, const
svn_boolean_t descend = TRUE;
svn_boolean_t use_notifier = TRUE;
apr_time_t start_time, time_taken;
+ ra_progress_baton_t ra_progress_baton = {0};
received_opts = apr_array_make(pool, SVN_OPT_MAX_OPTIONS, sizeof(int));
@@ -939,6 +958,12 @@ sub_main(int *exit_code, int argc, const
ctx->conflict_func2 = NULL;
ctx->conflict_baton2 = NULL;
+ if (!opt_state.quiet)
+ {
+ ctx->progress_func = ra_progress_func;
+ ctx->progress_baton = &ra_progress_baton;
+ }
+
/* And now we finally run the subcommand. */
start_time = apr_time_now();
err = (*subcommand->cmd_func)(os, &command_baton, pool);
@@ -979,6 +1004,15 @@ sub_main(int *exit_code, int argc, const
SVN_ERR(svn_cmdline_printf(pool,
_("%15.6f seconds taken\n"),
time_taken / 1.0e6));
+
+ /* Report how many bytes transferred over network if RA layer provided
+ this information. */
+ if (ra_progress_baton.bytes_transferred > 0)
+ SVN_ERR(svn_cmdline_printf(pool,
+ _("%15s bytes transferred over network\n"),
+ svn__i64toa_sep(
+ ra_progress_baton.bytes_transferred, ',',
+ pool)));
}
return SVN_NO_ERROR;
Modified: subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnlook/svnlook.c Mon Nov 2 16:45:32 2015
@@ -683,7 +683,8 @@ dump_contents(svn_stream_t *stream,
non-textual data -- in this case, the *IS_BINARY flag is set and no
temporary files are created.
- Use POOL for all that allocation goodness. */
+ TMPFILE1 and TMPFILE2 will be removed when RESULT_POOL is destroyed.
+ */
static svn_error_t *
prepare_tmpfiles(const char **tmpfile1,
const char **tmpfile2,
@@ -692,8 +693,8 @@ prepare_tmpfiles(const char **tmpfile1,
const char *path1,
svn_fs_root_t *root2,
const char *path2,
- const char *tmpdir,
- apr_pool_t *pool)
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
svn_string_t *mimetype;
svn_stream_t *stream;
@@ -710,7 +711,7 @@ prepare_tmpfiles(const char **tmpfile1,
if (root1)
{
SVN_ERR(svn_fs_node_prop(&mimetype, root1, path1,
- SVN_PROP_MIME_TYPE, pool));
+ SVN_PROP_MIME_TYPE, scratch_pool));
if (mimetype && svn_mime_type_is_binary(mimetype->data))
{
*is_binary = TRUE;
@@ -720,7 +721,7 @@ prepare_tmpfiles(const char **tmpfile1,
if (root2)
{
SVN_ERR(svn_fs_node_prop(&mimetype, root2, path2,
- SVN_PROP_MIME_TYPE, pool));
+ SVN_PROP_MIME_TYPE, scratch_pool));
if (mimetype && svn_mime_type_is_binary(mimetype->data))
{
*is_binary = TRUE;
@@ -730,17 +731,15 @@ prepare_tmpfiles(const char **tmpfile1,
/* Now, prepare the two temporary files, each of which will either
be empty, or will have real contents. */
- SVN_ERR(svn_stream_open_unique(&stream, tmpfile1,
- tmpdir,
- svn_io_file_del_none,
- pool, pool));
- SVN_ERR(dump_contents(stream, root1, path1, pool));
-
- SVN_ERR(svn_stream_open_unique(&stream, tmpfile2,
- tmpdir,
- svn_io_file_del_none,
- pool, pool));
- SVN_ERR(dump_contents(stream, root2, path2, pool));
+ SVN_ERR(svn_stream_open_unique(&stream, tmpfile1, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ result_pool, scratch_pool));
+ SVN_ERR(dump_contents(stream, root1, path1, scratch_pool));
+
+ SVN_ERR(svn_stream_open_unique(&stream, tmpfile2, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ result_pool, scratch_pool));
+ SVN_ERR(dump_contents(stream, root2, path2, scratch_pool));
return SVN_NO_ERROR;
}
@@ -840,7 +839,6 @@ print_diff_tree(svn_stream_t *out_stream
const char *path /* UTF-8! */,
const char *base_path /* UTF-8! */,
const svnlook_ctxt_t *c,
- const char *tmpdir,
apr_pool_t *pool)
{
const char *orig_path = NULL, *new_path = NULL;
@@ -849,7 +847,7 @@ print_diff_tree(svn_stream_t *out_stream
svn_boolean_t is_copy = FALSE;
svn_boolean_t binary = FALSE;
svn_boolean_t diff_header_printed = FALSE;
- apr_pool_t *subpool;
+ apr_pool_t *iterpool;
svn_stringbuf_t *header;
SVN_ERR(check_cancel(NULL));
@@ -910,7 +908,7 @@ print_diff_tree(svn_stream_t *out_stream
do_diff = TRUE;
SVN_ERR(prepare_tmpfiles(&orig_path, &new_path, &binary,
base_root, base_path, root, path,
- tmpdir, pool));
+ pool, pool));
}
else if (c->diff_copy_from && node->action == 'A' && is_copy)
{
@@ -919,7 +917,7 @@ print_diff_tree(svn_stream_t *out_stream
do_diff = TRUE;
SVN_ERR(prepare_tmpfiles(&orig_path, &new_path, &binary,
base_root, base_path, root, path,
- tmpdir, pool));
+ pool, pool));
}
}
else if (! c->no_diff_added && node->action == 'A')
@@ -928,14 +926,14 @@ print_diff_tree(svn_stream_t *out_stream
orig_empty = TRUE;
SVN_ERR(prepare_tmpfiles(&orig_path, &new_path, &binary,
NULL, base_path, root, path,
- tmpdir, pool));
+ pool, pool));
}
else if (! c->no_diff_deleted && node->action == 'D')
{
do_diff = TRUE;
SVN_ERR(prepare_tmpfiles(&orig_path, &new_path, &binary,
base_root, base_path, NULL, path,
- tmpdir, pool));
+ pool, pool));
}
/* The header for the copy case has already been created, and we don't
@@ -1101,12 +1099,6 @@ print_diff_tree(svn_stream_t *out_stream
}
}
- /* Make sure we delete any temporary files. */
- if (orig_path)
- SVN_ERR(svn_io_remove_file2(orig_path, FALSE, pool));
- if (new_path)
- SVN_ERR(svn_io_remove_file2(new_path, FALSE, pool));
-
/*** Now handle property diffs ***/
if ((node->prop_mod) && (node->action != 'D') && (! c->ignore_properties))
{
@@ -1153,26 +1145,21 @@ print_diff_tree(svn_stream_t *out_stream
}
/* Return here if the node has no children. */
- node = node->child;
- if (! node)
+ if (! node->child)
return SVN_NO_ERROR;
/* Recursively handle the node's children. */
- subpool = svn_pool_create(pool);
- SVN_ERR(print_diff_tree(out_stream, encoding, root, base_root, node,
- svn_dirent_join(path, node->name, subpool),
- svn_dirent_join(base_path, node->name, subpool),
- c, tmpdir, subpool));
- while (node->sibling)
+ iterpool = svn_pool_create(pool);
+ for (node = node->child; node; node = node->sibling)
{
- svn_pool_clear(subpool);
- node = node->sibling;
+ svn_pool_clear(iterpool);
+
SVN_ERR(print_diff_tree(out_stream, encoding, root, base_root, node,
- svn_dirent_join(path, node->name, subpool),
- svn_dirent_join(base_path, node->name, subpool),
- c, tmpdir, subpool));
+ svn_dirent_join(path, node->name, iterpool),
+ svn_dirent_join(base_path, node->name, iterpool),
+ c, iterpool));
}
- svn_pool_destroy(subpool);
+ svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -1535,12 +1522,10 @@ do_diff(svnlook_ctxt_t *c, apr_pool_t *p
SVN_ERR(generate_delta_tree(&tree, c->repos, root, base_rev_id, pool));
if (tree)
{
- const char *tmpdir;
svn_stream_t *out_stream;
const char *encoding = svn_cmdline_output_encoding(pool);
SVN_ERR(svn_fs_revision_root(&base_root, c->fs, base_rev_id, pool));
- SVN_ERR(svn_io_temp_dir(&tmpdir, pool));
/* This fflush() might seem odd, but it was added to deal
with this bug report:
@@ -1569,7 +1554,7 @@ do_diff(svnlook_ctxt_t *c, apr_pool_t *p
SVN_ERR(svn_stream_for_stdout(&out_stream, pool));
SVN_ERR(print_diff_tree(out_stream, encoding, root, base_root, tree,
- "", "", c, tmpdir, pool));
+ "", "", c, pool));
}
return SVN_NO_ERROR;
}
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py Mon Nov 2 16:45:32 2015
@@ -3236,11 +3236,60 @@ def dump_no_op_change(sbox):
# Test svn log -v for r2:
_, expected, _ = svntest.actions.run_and_verify_svn(None, [], 'log', '-v',
'-r2', sbox.repo_url)
+ found = [True for line in expected if line.find('M /bar\n') != -1]
+ if not found:
+ raise svntest.Failure
svntest.actions.run_and_verify_svn(expected, [], 'log', '-v',
'-r2', sbox2.repo_url)
# Test svn log -v for /bar:
_, expected, _ = svntest.actions.run_and_verify_svn(None, [], 'log', '-v',
sbox.repo_url + '/bar')
+ found = [True for line in expected if line.find('M /bar\n') != -1]
+ if not found:
+ raise svntest.Failure
+ svntest.actions.run_and_verify_svn(expected, [], 'log', '-v',
+ sbox2.repo_url + '/bar')
+
+@XFail()
+def dump_no_op_prop_change(sbox):
+ "svnadmin dump with no-op property change"
+
+ sbox.build(create_wc=False, empty=True)
+ empty_file = sbox.get_tempname()
+ svntest.main.file_write(empty_file, '')
+
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', svntest.main.make_log_msg(),
+ 'put', empty_file, 'bar',
+ 'propset', 'pname', 'pval', 'bar')
+ # Commit a no-op property change.
+ svntest.actions.run_and_verify_svnmucc(None, [],
+ '-U', sbox.repo_url,
+ '-m', svntest.main.make_log_msg(),
+ 'propset', 'pname', 'pval', 'bar')
+ # Dump and load the repository.
+ _, dump, _ = svntest.actions.run_and_verify_svnadmin(None, [],
+ 'dump', '-q',
+ sbox.repo_dir)
+ sbox2 = sbox.clone_dependent()
+ sbox2.build(create_wc=False, empty=True)
+ load_and_verify_dumpstream(sbox2, None, [], None, False, dump)
+
+ # Test svn log -v for r2:
+ _, expected, _ = svntest.actions.run_and_verify_svn(None, [], 'log', '-v',
+ '-r2', sbox.repo_url)
+ found = [True for line in expected if line.find('M /bar\n') != -1]
+ if not found:
+ raise svntest.Failure
+ svntest.actions.run_and_verify_svn(expected, [], 'log', '-v',
+ '-r2', sbox2.repo_url)
+ # Test svn log -v for /bar:
+ _, expected, _ = svntest.actions.run_and_verify_svn(None, [], 'log', '-v',
+ sbox.repo_url + '/bar')
+ found = [True for line in expected if line.find('M /bar\n') != -1]
+ if not found:
+ raise svntest.Failure
svntest.actions.run_and_verify_svn(expected, [], 'log', '-v',
sbox2.repo_url + '/bar')
@@ -3305,6 +3354,7 @@ test_list = [ None,
load_revprops,
dump_revprops,
dump_no_op_change,
+ dump_no_op_prop_change
]
if __name__ == '__main__':
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_delta/svndiff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_delta/svndiff-test.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_delta/svndiff-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_delta/svndiff-test.c Mon Nov 2 16:45:32 2015
@@ -88,7 +88,7 @@ main(int argc, char **argv)
#ifdef QUOPRINT_SVNDIFFS
encoder = svn_quoprint_encode(stdout_stream, pool);
#else
- encoder = svn_base64_encode(stdout_stream, pool);
+ encoder = svn_base64_encode2(stdout_stream, TRUE, pool);
#endif
/* use maximum compression level */
svn_txdelta_to_svndiff3(&svndiff_handler, &svndiff_baton,
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs/fs-test.c Mon Nov 2 16:45:32 2015
@@ -5971,6 +5971,7 @@ compare_contents(const svn_test_opts_t *
svn_revnum_t rev;
int i;
apr_pool_t *iterpool = svn_pool_create(pool);
+ svn_boolean_t changed;
/* Two similar but different texts that yield the same MD5 digest. */
const char *evil_text1
@@ -6153,6 +6154,21 @@ compare_contents(const svn_test_opts_t *
}
}
+ /* Check how svn_fs_contents_different() and svn_fs_contents_changed()
+ handles invalid path.*/
+ SVN_ERR(svn_fs_revision_root(&root1, fs, 1, iterpool));
+ SVN_TEST_ASSERT_ANY_ERROR(
+ svn_fs_contents_changed(&changed, root1, "/", root1, "/", iterpool));
+ SVN_TEST_ASSERT_ANY_ERROR(
+ svn_fs_contents_different(&changed, root1, "/", root1, "/", iterpool));
+
+ SVN_TEST_ASSERT_ANY_ERROR(
+ svn_fs_contents_changed(&changed, root1, "/non-existent", root1,
+ "/non-existent", iterpool));
+ SVN_TEST_ASSERT_ANY_ERROR(
+ svn_fs_contents_different(&changed, root1, "/non-existent", root1,
+ "/non-existent", iterpool));
+
svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_x/fs-x-pack-test.c Mon Nov 2 16:45:32 2015
@@ -888,7 +888,6 @@ test_batch_fsync(const svn_test_opts_t *
apr_size_t len = strlen(path);
SVN_ERR(svn_fs_x__batch_fsync_open_file(&file, batch, path, pool));
- SVN_ERR(svn_fs_x__batch_fsync_new_path(batch, path, pool));
SVN_ERR(svn_io_file_write(file, path, &len, pool));
}
@@ -906,7 +905,6 @@ test_batch_fsync(const svn_test_opts_t *
apr_size_t len = strlen(path);
SVN_ERR(svn_fs_x__batch_fsync_open_file(&file, batch, path, pool));
- SVN_ERR(svn_fs_x__batch_fsync_new_path(batch, path, pool));
SVN_ERR(svn_io_file_write(file, path, &len, pool));
}
@@ -923,7 +921,6 @@ test_batch_fsync(const svn_test_opts_t *
apr_size_t len = strlen(path);
SVN_ERR(svn_fs_x__batch_fsync_open_file(&file, batch, path, pool));
- SVN_ERR(svn_fs_x__batch_fsync_new_path(batch, path, pool));
SVN_ERR(svn_io_file_write(file, path, &len, pool));
}
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/stream-test.c Mon Nov 2 16:45:32 2015
@@ -550,9 +550,27 @@ test_stream_base64(apr_pool_t *pool)
NULL
};
+ /* Test svn_base64_encode2() with BREAK_LINES=FALSE. */
stream = svn_stream_from_stringbuf(actual, pool);
stream = svn_base64_decode(stream, pool);
- stream = svn_base64_encode(stream, pool);
+ stream = svn_base64_encode2(stream, TRUE, pool);
+
+ for (i = 0; strings[i]; i++)
+ {
+ apr_size_t len = strlen(strings[i]);
+
+ svn_stringbuf_appendbytes(expected, strings[i], len);
+ SVN_ERR(svn_stream_write(stream, strings[i], &len));
+ }
+
+ SVN_ERR(svn_stream_close(stream));
+
+ SVN_TEST_STRING_ASSERT(actual->data, expected->data);
+
+ /* Test svn_base64_encode2() with BREAK_LINES=FALSE. */
+ stream = svn_stream_from_stringbuf(actual, pool);
+ stream = svn_base64_decode(stream, pool);
+ stream = svn_base64_encode2(stream, FALSE, pool);
for (i = 0; strings[i]; i++)
{
@@ -701,6 +719,32 @@ test_stream_base64_2(apr_pool_t *pool)
};
int i;
+ /* Test svn_base64_encode2() with BREAK_LINES=TRUE. */
+ for (i = 0; data[i].encoded1; i++)
+ {
+ apr_size_t len1 = strlen(data[i].encoded1);
+
+ svn_stringbuf_t *actual = svn_stringbuf_create_empty(pool);
+ svn_stringbuf_t *expected = svn_stringbuf_create_empty(pool);
+ svn_stream_t *stream = svn_stream_from_stringbuf(actual, pool);
+
+ stream = svn_base64_encode2(stream, TRUE, pool);
+ stream = svn_base64_decode(stream, pool);
+
+ SVN_ERR(svn_stream_write(stream, data[i].encoded1, &len1));
+ svn_stringbuf_appendbytes(expected, data[i].encoded1, len1);
+
+ if (data[i].encoded2)
+ {
+ apr_size_t len2 = strlen(data[i].encoded2);
+ SVN_ERR(svn_stream_write(stream, data[i].encoded2, &len2));
+ svn_stringbuf_appendbytes(expected, data[i].encoded2, len2);
+ }
+
+ SVN_ERR(svn_stream_close(stream));
+ }
+
+ /* Test svn_base64_encode2() with BREAK_LINES=FALSE. */
for (i = 0; data[i].encoded1; i++)
{
apr_size_t len1 = strlen(data[i].encoded1);
@@ -709,7 +753,7 @@ test_stream_base64_2(apr_pool_t *pool)
svn_stringbuf_t *expected = svn_stringbuf_create_empty(pool);
svn_stream_t *stream = svn_stream_from_stringbuf(actual, pool);
- stream = svn_base64_encode(stream, pool);
+ stream = svn_base64_encode2(stream, FALSE, pool);
stream = svn_base64_decode(stream, pool);
SVN_ERR(svn_stream_write(stream, data[i].encoded1, &len1));
Modified: subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c Mon Nov 2 16:45:32 2015
@@ -119,7 +119,7 @@ create_fs(svn_fs_t **fs_p,
runs. */
SVN_ERR(svn_io_remove_dir2(name, TRUE, NULL, NULL, pool));
- SVN_ERR(svn_fs_create(fs_p, name, fs_config, pool));
+ SVN_ERR(svn_fs_create2(fs_p, name, fs_config, pool, pool));
if (! *fs_p)
return svn_error_create(SVN_ERR_FS_GENERAL, NULL,
"Couldn't alloc a new fs object.");
Modified: subversion/branches/move-tracking-2/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/win-tests.py?rev=1712080&r1=1712079&r2=1712080&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/win-tests.py (original)
+++ subversion/branches/move-tracking-2/win-tests.py Mon Nov 2 16:45:32 2015
@@ -84,6 +84,8 @@ def _usage_exit():
print(" --disable-http-v2 : Do not advertise support for HTTPv2 on server")
print(" --disable-bulk-updates : Disable bulk updates on HTTP server")
print(" --ssl-cert : Path to SSL server certificate to trust.")
+ print(" --https : Run Apache httpd with an https setup.")
+ print(" --http2 : Enable http2 in Apache Httpd (>= 2.4.17).")
print(" --exclusive-wc-locks : Enable exclusive working copy locks")
print(" --memcached-dir=DIR : Run memcached from dir")
print(" --memcached-server= : Enable usage of the specified memcached server")
@@ -134,7 +136,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr
'httpd-server', 'http-short-circuit', 'httpd-no-log',
'disable-http-v2', 'disable-bulk-updates', 'help',
'fsfs-packing', 'fsfs-sharding=', 'javahl', 'swig=',
- 'list', 'enable-sasl', 'bin=', 'parallel',
+ 'list', 'enable-sasl', 'bin=', 'parallel', 'http2',
'config-file=', 'server-minor-version=', 'log-level=',
'log-to-stdout', 'mode-filter=', 'milestone-filter=',
'ssl-cert=', 'exclusive-wc-locks', 'memcached-server=',
@@ -156,6 +158,7 @@ httpd_port = None
httpd_service = None
httpd_no_log = None
use_ssl = False
+use_http2 = False
http_short_circuit = False
advertise_httpv2 = True
http_bulk_updates = True
@@ -218,6 +221,8 @@ for opt, val in opts:
httpd_no_log = 1
elif opt == '--https':
use_ssl = 1
+ elif opt == '--http2':
+ use_http2 = 1
elif opt == '--http-short-circuit':
http_short_circuit = True
elif opt == '--disable-http-v2':
@@ -459,8 +464,8 @@ class Svnserve:
class Httpd:
"Run httpd for DAV tests"
def __init__(self, abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
- httpd_port, service, use_ssl, no_log, httpv2, short_circuit,
- bulk_updates):
+ httpd_port, service, use_ssl, use_http2, no_log, httpv2,
+ short_circuit, bulk_updates):
self.name = 'apache.exe'
self.httpd_port = httpd_port
self.httpd_dir = abs_httpd_dir
@@ -559,6 +564,8 @@ class Httpd:
# Write LoadModule for minimal system module
if use_ssl:
fp.write(self._sys_module('ssl_module', 'mod_ssl.so'))
+ if use_http2:
+ fp.write(self._sys_module('http2_module', 'mod_http2.so'))
fp.write(self._sys_module('dav_module', 'mod_dav.so'))
if self.httpd_ver >= 2.3:
fp.write(self._sys_module('access_compat_module', 'mod_access_compat.so'))
@@ -585,9 +592,16 @@ class Httpd:
if use_ssl:
fp.write('SSLEngine on\n')
+ fp.write('SSLProtocol All -SSLv2 -SSLv3\n')
fp.write('SSLCertificateFile %s\n' % self._quote(self.certfile))
fp.write('SSLCertificateKeyFile %s\n' % self._quote(self.certkeyfile))
+ if use_ssl and use_http2:
+ fp.write('Protocols h2 http/1.1\n')
+ elif use_http2:
+ fp.write('Protocols h2c http/1.1\n')
+ fp.write('H2Direct on\n')
+
# Don't handle .htaccess, symlinks, etc.
fp.write('<Directory />\n')
fp.write('AllowOverride None\n')
@@ -996,7 +1010,7 @@ if not list_tests:
if run_httpd:
daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
- httpd_port, httpd_service, use_ssl,
+ httpd_port, httpd_service, use_ssl, use_http2,
httpd_no_log, advertise_httpv2, http_short_circuit,
http_bulk_updates)
Propchange: subversion/branches/move-tracking-2/win-tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 2 16:45:32 2015
@@ -86,4 +86,4 @@
/subversion/branches/verify-at-commit/win-tests.py:1462039-1462408
/subversion/branches/verify-keep-going/win-tests.py:1439280-1546110
/subversion/branches/wc-collate-path/win-tests.py:1402685-1480384
-/subversion/trunk/win-tests.py:1606692-1710529
+/subversion/trunk/win-tests.py:1606692-1712079