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/10/26 09:43:08 UTC
svn commit: r1710531 [3/3] - in /subversion/branches/move-tracking-2: ./
build/ build/ac-macros/ subversion/ subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/bindings/swig/ subversion/bindings/s...
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/atomic.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/atomic.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/atomic.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/atomic.c Mon Oct 26 08:43:06 2015
@@ -22,8 +22,11 @@
#include <assert.h>
#include <apr_time.h>
-#include "private/svn_atomic.h"
+#include "svn_pools.h"
+
+#include "private/svn_atomic.h"
+#include "private/svn_mutex.h"
/* Magic values for atomic initialization */
#define SVN_ATOMIC_UNINITIALIZED 0
@@ -174,3 +177,42 @@ svn_atomic__init_once_no_error(volatile
else
return init_baton.errstr;
}
+
+/* The process-global counter that we use to produce process-wide unique
+ * values. Since APR has no 64 bit atomics, all access to this will be
+ * serialized through COUNTER_MUTEX. */
+static apr_uint64_t uniqiue_counter = 0;
+
+/* The corresponding mutex and initialization state. */
+static volatile svn_atomic_t counter_status = SVN_ATOMIC_UNINITIALIZED;
+static svn_mutex__t *counter_mutex = NULL;
+
+/* svn_atomic__err_init_func_t implementation that initializes COUNTER_MUTEX.
+ * Note that neither argument will be used and should be NULL. */
+static svn_error_t *
+init_unique_counter(void *null_baton,
+ apr_pool_t *null_pool)
+{
+ /* COUNTER_MUTEX is global, so it needs to live in a global pool.
+ * APR also makes those thread-safe by default. */
+ SVN_ERR(svn_mutex__init(&counter_mutex, TRUE, svn_pool_create(NULL)));
+ return SVN_NO_ERROR;
+}
+
+/* Read and increment UNIQIUE_COUNTER. Return the new value in *VALUE.
+ * Call this function only while having acquired the COUNTER_MUTEX. */
+static svn_error_t *
+read_unique_counter(apr_uint64_t *value)
+{
+ *value = ++uniqiue_counter;
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+svn_atomic__unique_counter(apr_uint64_t *value)
+{
+ SVN_ERR(svn_atomic__init_once(&counter_status, init_unique_counter, NULL,
+ NULL));
+ SVN_MUTEX__WITH_LOCK(counter_mutex, read_unique_counter(value));
+ return SVN_NO_ERROR;
+}
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=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/deprecated.c Mon Oct 26 08:43:06 2015
@@ -1209,6 +1209,16 @@ svn_stream_checksummed(svn_stream_t *str
return s;
}
+svn_error_t *
+svn_string_from_stream(svn_string_t **result,
+ svn_stream_t *stream,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
+{
+ return svn_error_trace(svn_string_from_stream2(result, stream, 0,
+ result_pool));
+}
+
/*** From path.c ***/
const char *
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/path.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/path.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/path.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/path.c Mon Oct 26 08:43:06 2015
@@ -910,9 +910,24 @@ uri_escape(const char *path, const char
svn_stringbuf_t *retstr;
apr_size_t i, copied = 0;
int c;
+ apr_size_t len;
+ const char *p;
- retstr = svn_stringbuf_create_ensure(strlen(path), pool);
- for (i = 0; path[i]; i++)
+ /* To terminate our scanning loop, table[NUL] must report "invalid". */
+ assert(table[0] == 0);
+
+ /* Quick check: Does any character need escaping? */
+ for (p = path; table[(unsigned char)*p]; ++p)
+ {}
+
+ /* No char to escape before EOS? */
+ if (*p == '\0')
+ return path;
+
+ /* We need to escape at least one character. */
+ len = strlen(p) + (p - path);
+ retstr = svn_stringbuf_create_ensure(len, pool);
+ for (i = p - path; i < len; i++)
{
c = (unsigned char)path[i];
if (table[c])
@@ -941,10 +956,6 @@ uri_escape(const char *path, const char
copied = i + 1;
}
- /* If we didn't encode anything, we don't need to duplicate the string. */
- if (retstr->len == 0)
- return path;
-
/* Anything left to copy? */
if (i - copied)
svn_stringbuf_appendbytes(retstr, path + copied, i - copied);
@@ -971,7 +982,7 @@ svn_path_uri_encode(const char *path, ap
}
static const char iri_escape_chars[256] = {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -998,7 +1009,7 @@ svn_path_uri_from_iri(const char *iri, a
}
static const char uri_autoescape_chars[256] = {
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/sqlite.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/sqlite.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/sqlite.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/sqlite.c Mon Oct 26 08:43:06 2015
@@ -1171,6 +1171,7 @@ svn_sqlite__open(svn_sqlite__db_t **db,
affects application(read: Subversion) performance/behavior. */
"PRAGMA foreign_keys=OFF;" /* SQLITE_DEFAULT_FOREIGN_KEYS*/
"PRAGMA locking_mode = NORMAL;" /* SQLITE_DEFAULT_LOCKING_MODE */
+ /* Testing shows TRUNCATE is faster than DELETE on Windows. */
"PRAGMA journal_mode = TRUNCATE;"
),
*db);
Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/stream.c Mon Oct 26 08:43:06 2015
@@ -42,6 +42,7 @@
#include "svn_checksum.h"
#include "svn_path.h"
#include "svn_private_config.h"
+#include "svn_sorts.h"
#include "private/svn_atomic.h"
#include "private/svn_error_private.h"
#include "private/svn_eol_private.h"
@@ -1480,32 +1481,44 @@ svn_stream_checksummed2(svn_stream_t *st
/* Miscellaneous stream functions. */
+/*
+ * [JAF] By considering the buffer size doubling algorithm we use, I think
+ * the performance characteristics of this implementation are as follows:
+ *
+ * When the effective hint is big enough for the actual data, it uses
+ * minimal time and allocates space roughly equal to the effective hint.
+ * Otherwise, it incurs a time overhead for copying an additional 1x to 2x
+ * the actual length of data, and a space overhead of an additional 2x to
+ * 3x the actual length.
+ */
svn_error_t *
-svn_stringbuf_from_stream(svn_stringbuf_t **str,
+svn_stringbuf_from_stream(svn_stringbuf_t **result,
svn_stream_t *stream,
apr_size_t len_hint,
apr_pool_t *result_pool)
{
#define MIN_READ_SIZE 64
-
- apr_size_t to_read = 0;
svn_stringbuf_t *text
- = svn_stringbuf_create_ensure(len_hint + MIN_READ_SIZE,
+ = svn_stringbuf_create_ensure(MAX(len_hint + 1, MIN_READ_SIZE),
result_pool);
- do
+ while(TRUE)
{
- to_read = text->blocksize - 1 - text->len;
- SVN_ERR(svn_stream_read_full(stream, text->data + text->len, &to_read));
- text->len += to_read;
+ apr_size_t to_read = text->blocksize - 1 - text->len;
+ apr_size_t actually_read = to_read;
+
+ SVN_ERR(svn_stream_read_full(stream, text->data + text->len, &actually_read));
+ text->len += actually_read;
+
+ if (actually_read < to_read)
+ break;
- if (to_read && text->blocksize < text->len + MIN_READ_SIZE)
+ if (text->blocksize < text->len + MIN_READ_SIZE)
svn_stringbuf_ensure(text, text->blocksize * 2);
}
- while (to_read);
text->data[text->len] = '\0';
- *str = text;
+ *result = text;
return SVN_NO_ERROR;
}
@@ -1793,32 +1806,18 @@ svn_stream_for_stderr(svn_stream_t **err
svn_error_t *
-svn_string_from_stream(svn_string_t **result,
- svn_stream_t *stream,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
+svn_string_from_stream2(svn_string_t **result,
+ svn_stream_t *stream,
+ apr_size_t len_hint,
+ apr_pool_t *result_pool)
{
- svn_stringbuf_t *work = svn_stringbuf_create_ensure(SVN__STREAM_CHUNK_SIZE,
- result_pool);
- char *buffer = apr_palloc(scratch_pool, SVN__STREAM_CHUNK_SIZE);
+ svn_stringbuf_t *buf;
- while (1)
- {
- apr_size_t len = SVN__STREAM_CHUNK_SIZE;
-
- SVN_ERR(svn_stream_read_full(stream, buffer, &len));
- svn_stringbuf_appendbytes(work, buffer, len);
-
- if (len < SVN__STREAM_CHUNK_SIZE)
- break;
- }
+ SVN_ERR(svn_stringbuf_from_stream(&buf, stream, len_hint, result_pool));
+ *result = svn_stringbuf__morph_into_string(buf);
SVN_ERR(svn_stream_close(stream));
- *result = apr_palloc(result_pool, sizeof(**result));
- (*result)->data = work->data;
- (*result)->len = work->len;
-
return SVN_NO_ERROR;
}
Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/old-and-busted.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/old-and-busted.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/old-and-busted.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/old-and-busted.c Mon Oct 26 08:43:06 2015
@@ -1203,7 +1203,8 @@ svn_wc__read_entries_old(apr_hash_t **en
/* Open the entries file. */
SVN_ERR(svn_wc__open_adm_stream(&stream, dir_abspath, SVN_WC__ADM_ENTRIES,
scratch_pool, scratch_pool));
- SVN_ERR(svn_string_from_stream(&buf, stream, scratch_pool, scratch_pool));
+ SVN_ERR(svn_string_from_stream2(&buf, stream, SVN__STREAM_CHUNK_SIZE,
+ scratch_pool));
/* We own the returned data; it is modifiable, so cast away... */
curp = (char *)buf->data;
Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/props.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/props.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/props.c Mon Oct 26 08:43:06 2015
@@ -2170,11 +2170,8 @@ svn_wc_canonicalize_svn_prop(const svn_s
/* Keep this static, it may get stored (for read-only purposes) in a
hash that outlives this function. */
- static const svn_string_t boolean_value =
- {
- SVN_PROP_BOOLEAN_TRUE,
- sizeof(SVN_PROP_BOOLEAN_TRUE) - 1
- };
+ static const svn_string_t boolean_value
+ = SVN__STATIC_STRING(SVN_PROP_BOOLEAN_TRUE);
SVN_ERR(validate_prop_against_node_kind(propname, path, kind, pool));
Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-queries.sql?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/wc-queries.sql Mon Oct 26 08:43:06 2015
@@ -1286,7 +1286,10 @@ WHERE (wc_id = ?1 AND local_relpath = ?2
OR (wc_id = ?1 AND IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
-- STMT_PRAGMA_LOCKING_MODE
-PRAGMA locking_mode = exclusive
+PRAGMA locking_mode = exclusive;
+/* Testing shows DELETE is faster than TRUNCATE on NFS and
+ exclusive-locking is mostly used on remote file systems. */
+PRAGMA journal_mode = DELETE
/* ------------------------------------------------------------------------- */
Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/merge.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/merge.c (original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/merge.c Mon Oct 26 08:43:06 2015
@@ -268,16 +268,16 @@ dav_svn__merge_response(ap_filter_t *out
/* get the creationdate and creator-displayname of the new revision, too. */
- serr = svn_fs_revision_prop(&creationdate, repos->fs, new_rev,
- SVN_PROP_REVISION_DATE, pool);
+ serr = svn_fs_revision_prop2(&creationdate, repos->fs, new_rev,
+ SVN_PROP_REVISION_DATE, TRUE, pool, pool);
if (serr != NULL)
{
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
"Could not get date of newest revision",
repos->pool);
}
- serr = svn_fs_revision_prop(&creator_displayname, repos->fs, new_rev,
- SVN_PROP_REVISION_AUTHOR, pool);
+ serr = svn_fs_revision_prop2(&creator_displayname, repos->fs, new_rev,
+ SVN_PROP_REVISION_AUTHOR, TRUE, pool, pool);
if (serr != NULL)
{
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/repos.c Mon Oct 26 08:43:06 2015
@@ -3035,8 +3035,9 @@ get_last_modified(const dav_resource *re
return -1;
}
- if ((serr = svn_fs_revision_prop(&date_time, resource->info->repos->fs,
- created_rev, "svn:date", resource->pool)))
+ if ((serr = svn_fs_revision_prop2(&date_time, resource->info->repos->fs,
+ created_rev, "svn:date", TRUE,
+ resource->pool, resource->pool)))
{
svn_error_clear(serr);
return -1;
Modified: subversion/branches/move-tracking-2/subversion/mod_dav_svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/mod_dav_svn/status.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/mod_dav_svn/status.c (original)
+++ subversion/branches/move-tracking-2/subversion/mod_dav_svn/status.c Mon Oct 26 08:43:06 2015
@@ -29,6 +29,24 @@
#include "private/svn_cache.h"
#include "private/svn_fs_private.h"
+/* The apache headers define these and they conflict with our definitions. */
+#ifdef PACKAGE_BUGREPORT
+#undef PACKAGE_BUGREPORT
+#endif
+#ifdef PACKAGE_NAME
+#undef PACKAGE_NAME
+#endif
+#ifdef PACKAGE_STRING
+#undef PACKAGE_STRING
+#endif
+#ifdef PACKAGE_TARNAME
+#undef PACKAGE_TARNAME
+#endif
+#ifdef PACKAGE_VERSION
+#undef PACKAGE_VERSION
+#endif
+#include "svn_private_config.h"
+
#ifndef DEFAULT_TIME_FORMAT
#define DEFAULT_TIME_FORMAT "%Y-%m-%d %H:%M:%S %Z"
#endif
Modified: subversion/branches/move-tracking-2/subversion/po/it.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/it.po?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/it.po (original)
+++ subversion/branches/move-tracking-2/subversion/po/it.po Mon Oct 26 08:43:06 2015
@@ -10283,17 +10283,17 @@ msgstr ""
#: ../svn/tree-conflicts.c:107
#, c-format
msgid "local %s, incoming %s upon %s"
-msgstr ""
-
-#: ../svn/util.c:74
-#, c-format
-msgid ""
-"Committed revision %ld%s.\n"
-msgstr ""
-"Commit della Revisione %ld%s eseguito.\n"
-
-#: ../svn/util.c:78
-msgid " (the answer to life, the universe, and everything)"
+msgstr ""
+
+#: ../svn/util.c:74
+#, c-format
+msgid ""
+"Committed revision %ld%s.\n"
+msgstr ""
+"Commit della Revisione %ld%s eseguito.\n"
+
+#: ../svn/util.c:78
+msgid " (the answer to life, the universe, and everything)"
msgstr ""
#: ../svn/util.c:87
Modified: subversion/branches/move-tracking-2/subversion/po/ja.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/ja.po?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/ja.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/ja.po [UTF-8] Mon Oct 26 08:43:06 2015
@@ -10640,17 +10640,17 @@ msgstr ""
#: ../svn/tree-conflicts.c:107
#, c-format
msgid "local %s, incoming %s upon %s"
-msgstr ""
-
-#: ../svn/util.c:74
-#, c-format
-msgid ""
-"Committed revision %ld%s.\n"
-msgstr ""
-"リビジョン %ld%s をコミットしました。\n"
-
-#: ../svn/util.c:78
-msgid " (the answer to life, the universe, and everything)"
+msgstr ""
+
+#: ../svn/util.c:74
+#, c-format
+msgid ""
+"Committed revision %ld%s.\n"
+msgstr ""
+"リビジョン %ld%s をコミットしました。\n"
+
+#: ../svn/util.c:78
+msgid " (the answer to life, the universe, and everything)"
msgstr ""
#: ../svn/util.c:87
Modified: subversion/branches/move-tracking-2/subversion/po/ko.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/ko.po?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/ko.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/ko.po [UTF-8] Mon Oct 26 08:43:06 2015
@@ -10527,14 +10527,14 @@ msgstr "업데이트 요약:\n"
msgid " Updated '%s' to r%ld.\n"
msgstr " '%s' 을(를) r%ld 로 업데이트함.\n"
-#: ../svn/util.c:75
-#, c-format
-msgid ""
-"Committed revision %ld%s.\n"
-msgstr ""
-"커밋된 리비전 %ld%s.\n"
-
-#: ../svn/util.c:79
+#: ../svn/util.c:75
+#, c-format
+msgid ""
+"Committed revision %ld%s.\n"
+msgstr ""
+"커밋된 리비전 %ld%s.\n"
+
+#: ../svn/util.c:79
msgid " (the answer to life, the universe, and everything)"
msgstr " (the answer to life, the universe, and everything)"
Modified: subversion/branches/move-tracking-2/subversion/po/zh_TW.po
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/po/zh_TW.po?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/po/zh_TW.po [UTF-8] (original)
+++ subversion/branches/move-tracking-2/subversion/po/zh_TW.po [UTF-8] Mon Oct 26 08:43:06 2015
@@ -10120,17 +10120,17 @@ msgstr ""
#: ../svn/tree-conflicts.c:107
#, c-format
msgid "local %s, incoming %s upon %s"
-msgstr ""
-
-#: ../svn/util.c:74
-#, c-format
-msgid ""
-"Committed revision %ld%s.\n"
-msgstr ""
-"送交修訂版 %ld%s.\n"
-
-#: ../svn/util.c:78
-msgid " (the answer to life, the universe, and everything)"
+msgstr ""
+
+#: ../svn/util.c:74
+#, c-format
+msgid ""
+"Committed revision %ld%s.\n"
+msgstr ""
+"送交修訂版 %ld%s.\n"
+
+#: ../svn/util.c:78
+msgid " (the answer to life, the universe, and everything)"
msgstr ""
#: ../svn/util.c:87
Modified: subversion/branches/move-tracking-2/subversion/svnbench/null-log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnbench/null-log-cmd.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnbench/null-log-cmd.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnbench/null-log-cmd.c Mon Oct 26 08:43:06 2015
@@ -198,10 +198,14 @@ svn_cl__null_log(apr_getopt_t *os,
lb.quiet = opt_state->quiet;
revprops = apr_array_make(pool, 3, sizeof(char *));
- APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_AUTHOR;
- APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_DATE;
- if (!opt_state->quiet)
- APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_LOG;
+ if (!opt_state->no_revprops)
+ {
+ APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_AUTHOR;
+ APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_DATE;
+ if (!opt_state->quiet)
+ APR_ARRAY_PUSH(revprops, const char *) = SVN_PROP_REVISION_LOG;
+ }
+
SVN_ERR(svn_client_log5(targets,
&target_peg_revision,
opt_state->revision_ranges,
Modified: subversion/branches/move-tracking-2/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnserve/serve.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnserve/serve.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnserve/serve.c Mon Oct 26 08:43:06 2015
@@ -839,7 +839,7 @@ static svn_error_t *set_path(svn_ra_svn_
svn_depth_t depth = svn_depth_infinity;
svn_boolean_t start_empty;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "crb?(?c)?w",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "crb?(?c)?w",
&path, &rev, &start_empty, &lock_token,
&depth_word));
if (depth_word)
@@ -862,7 +862,7 @@ static svn_error_t *delete_path(svn_ra_s
report_driver_baton_t *b = baton;
const char *path;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c", &path));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c", &path));
path = svn_relpath_canonicalize(path, pool);
if (!b->err)
b->err = svn_repos_delete_path(b->report_baton, path, pool);
@@ -879,7 +879,7 @@ static svn_error_t *link_path(svn_ra_svn
/* Default to infinity, for old clients that don't send depth. */
svn_depth_t depth = svn_depth_infinity;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "ccrb?(?c)?w",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "ccrb?(?c)?w",
&path, &url, &rev, &start_empty,
&lock_token, &depth_word));
@@ -1105,7 +1105,7 @@ reparent(svn_ra_svn_conn_t *conn,
const char *url;
const char *fs_path;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c", &url));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c", &url));
url = svn_uri_canonicalize(url, pool);
SVN_ERR(trivial_auth_request(conn, pool, b));
SVN_CMD_ERR(get_fs_path(svn_path_uri_decode(b->repository->repos_url, pool),
@@ -1145,7 +1145,7 @@ get_dated_rev(svn_ra_svn_conn_t *conn,
apr_time_t tm;
const char *timestr;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c", ×tr));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c", ×tr));
SVN_ERR(log_command(b, conn, pool, "get-dated-rev %s", timestr));
SVN_ERR(trivial_auth_request(conn, pool, b));
@@ -1197,7 +1197,7 @@ change_rev_prop2(svn_ra_svn_conn_t *conn
svn_string_t *old_value;
svn_boolean_t dont_care;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "rc(?s)(b?s)",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "rc(?s)(b?s)",
&rev, &name, &value,
&dont_care, &old_value));
@@ -1236,7 +1236,7 @@ change_rev_prop(svn_ra_svn_conn_t *conn,
/* Because the revprop value was at one time mandatory, the usual
optional element pattern "(?s)" isn't used. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "rc?s", &rev, &name, &value));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "rc?s", &rev, &name, &value));
SVN_ERR(do_change_rev_prop(conn, b, rev, name, NULL, value, pool));
@@ -1257,7 +1257,7 @@ rev_proplist(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "r", &rev));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "r", &rev));
SVN_ERR(log_command(b, conn, pool, "%s", svn_log__rev_proplist(rev, pool)));
SVN_ERR(trivial_auth_request(conn, pool, b));
@@ -1286,7 +1286,7 @@ rev_prop(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "rc", &rev, &name));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "rc", &rev, &name));
SVN_ERR(log_command(b, conn, pool, "%s",
svn_log__rev_prop(rev, name, pool)));
@@ -1455,7 +1455,7 @@ commit(svn_ra_svn_conn_t *conn,
{
/* Clients before 1.2 don't send lock-tokens, keep-locks,
and rev-props fields. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c", &log_msg));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c", &log_msg));
lock_tokens = NULL;
keep_locks = TRUE;
revprop_list = NULL;
@@ -1463,7 +1463,7 @@ commit(svn_ra_svn_conn_t *conn,
else
{
/* Clients before 1.5 don't send the rev-props field. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "clb?l", &log_msg,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "clb?l", &log_msg,
&lock_tokens, &keep_locks,
&revprop_list));
}
@@ -1568,7 +1568,7 @@ get_file(svn_ra_svn_conn_t *conn,
ab.conn = conn;
/* Parse arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)bb?B", &path, &rev,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)bb?B", &path, &rev,
&want_props, &want_contents,
&wants_inherited_props));
@@ -1674,6 +1674,19 @@ get_dir(svn_ra_svn_conn_t *conn,
svn_ra_svn__list_t *params,
void *baton)
{
+ static const svn_string_t str_kind
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_KIND);
+ static const svn_string_t str_size
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_SIZE);
+ static const svn_string_t str_has_props
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_HAS_PROPS);
+ static const svn_string_t str_created_rev
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_CREATED_REV);
+ static const svn_string_t str_time
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_TIME);
+ static const svn_string_t str_last_author
+ = SVN__STATIC_STRING(SVN_RA_SVN_DIRENT_LAST_AUTHOR);
+
server_baton_t *b = baton;
const char *path, *full_path;
svn_revnum_t rev;
@@ -1693,7 +1706,7 @@ get_dir(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)bb?l?B", &path, &rev,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)bb?l?B", &path, &rev,
&want_props, &want_contents,
&dirent_fields_list,
&wants_inherited_props));
@@ -1717,17 +1730,17 @@ get_dir(svn_ra_svn_conn_t *conn,
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Dirent field not a string");
- if (strcmp(SVN_RA_SVN_DIRENT_KIND, elt->u.word) == 0)
+ if (svn_string_compare(&str_kind, &elt->u.word))
dirent_fields |= SVN_DIRENT_KIND;
- else if (strcmp(SVN_RA_SVN_DIRENT_SIZE, elt->u.word) == 0)
+ else if (svn_string_compare(&str_size, &elt->u.word))
dirent_fields |= SVN_DIRENT_SIZE;
- else if (strcmp(SVN_RA_SVN_DIRENT_HAS_PROPS, elt->u.word) == 0)
+ else if (svn_string_compare(&str_has_props, &elt->u.word))
dirent_fields |= SVN_DIRENT_HAS_PROPS;
- else if (strcmp(SVN_RA_SVN_DIRENT_CREATED_REV, elt->u.word) == 0)
+ else if (svn_string_compare(&str_created_rev, &elt->u.word))
dirent_fields |= SVN_DIRENT_CREATED_REV;
- else if (strcmp(SVN_RA_SVN_DIRENT_TIME, elt->u.word) == 0)
+ else if (svn_string_compare(&str_time, &elt->u.word))
dirent_fields |= SVN_DIRENT_TIME;
- else if (strcmp(SVN_RA_SVN_DIRENT_LAST_AUTHOR, elt->u.word) == 0)
+ else if (svn_string_compare(&str_last_author, &elt->u.word))
dirent_fields |= SVN_DIRENT_LAST_AUTHOR;
}
}
@@ -1890,7 +1903,7 @@ update(svn_ra_svn_conn_t *conn,
svn_boolean_t is_checkout;
/* Parse the arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "(?r)cb?w3?3", &rev, &target,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "(?r)cb?w3?3", &rev, &target,
&recurse, &depth_word,
&send_copyfrom_args, &ignore_ancestry));
target = svn_relpath_canonicalize(target, pool);
@@ -1948,7 +1961,7 @@ switch_cmd(svn_ra_svn_conn_t *conn,
svn_tristate_t ignore_ancestry; /* Optional; default TRUE */
/* Parse the arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "(?r)cbc?w?33", &rev, &target,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "(?r)cbc?w?33", &rev, &target,
&recurse, &switch_url, &depth_word,
&send_copyfrom_args, &ignore_ancestry));
target = svn_relpath_canonicalize(target, pool);
@@ -1998,7 +2011,7 @@ status(svn_ra_svn_conn_t *conn,
svn_depth_t depth = svn_depth_unknown;
/* Parse the arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "cb?(?r)?w",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "cb?(?r)?w",
&target, &recurse, &rev, &depth_word));
target = svn_relpath_canonicalize(target, pool);
@@ -2041,14 +2054,14 @@ diff(svn_ra_svn_conn_t *conn,
if (params->nelts == 5)
{
/* Clients before 1.4 don't send the text_deltas boolean or depth. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "(?r)cbbc", &rev, &target,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "(?r)cbbc", &rev, &target,
&recurse, &ignore_ancestry, &versus_url));
text_deltas = TRUE;
depth_word = NULL;
}
else
{
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "(?r)cbbcb?w",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "(?r)cbbcb?w",
&rev, &target, &recurse,
&ignore_ancestry, &versus_url,
&text_deltas, &depth_word));
@@ -2113,7 +2126,7 @@ get_mergeinfo(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "l(?r)wb", &paths, &rev,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "l(?r)wb", &paths, &rev,
&inherit_word, &include_descendants));
inherit = svn_inheritance_from_word(inherit_word);
@@ -2273,7 +2286,7 @@ log_cmd(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "l(?r)(?r)bb?n?Bwl", &paths,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "l(?r)(?r)bb?n?Bwl", &paths,
&start_rev, &end_rev, &send_changed_paths,
&strict_node, &limit,
&include_merged_revs_param,
@@ -2369,7 +2382,7 @@ check_path(svn_ra_svn_conn_t *conn,
svn_fs_root_t *root;
svn_node_kind_t kind;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)", &path, &rev));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)", &path, &rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -2402,7 +2415,7 @@ stat_cmd(svn_ra_svn_conn_t *conn,
svn_fs_root_t *root;
svn_dirent_t *dirent;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)", &path, &rev));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)", &path, &rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -2463,7 +2476,7 @@ get_locations(svn_ra_svn_conn_t *conn,
ab.conn = conn;
/* Parse the arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "crl", &relative_path,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "crl", &relative_path,
&peg_revision,
&loc_revs_proto));
relative_path = svn_relpath_canonicalize(relative_path, pool);
@@ -2560,7 +2573,7 @@ get_location_segments(svn_ra_svn_conn_t
ab.conn = conn;
/* Parse the arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)(?r)(?r)",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)(?r)(?r)",
&relative_path, &peg_revision,
&start_rev, &end_rev));
relative_path = svn_relpath_canonicalize(relative_path, pool);
@@ -2729,7 +2742,7 @@ get_file_revs(svn_ra_svn_conn_t *conn,
ab.conn = conn;
/* Parse arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?r)(?r)?B",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)(?r)?B",
&path, &start_rev, &end_rev,
&include_merged_revs_param));
path = svn_relpath_canonicalize(path, pool);
@@ -2779,7 +2792,7 @@ lock(svn_ra_svn_conn_t *conn,
svn_revnum_t current_rev;
svn_lock_t *l;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?c)b(?r)", &path, &comment,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?c)b(?r)", &path, &comment,
&steal_lock, ¤t_rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -2860,7 +2873,7 @@ lock_many(svn_ra_svn_conn_t *conn,
apr_hash_index_t *hi;
struct lock_many_baton_t lmb;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "(?c)bl", &comment, &steal_lock,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "(?c)bl", &comment, &steal_lock,
&path_revs));
subpool = svn_pool_create(pool);
@@ -2885,7 +2898,7 @@ lock_many(svn_ra_svn_conn_t *conn,
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Lock requests should be list of lists");
- SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?r)", &path,
+ SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, "c(?r)", &path,
¤t_rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
@@ -2944,7 +2957,7 @@ lock_many(svn_ra_svn_conn_t *conn,
svn_pool_clear(subpool);
- write_err = svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?r)",
+ write_err = svn_ra_svn__parse_tuple(&item->u.list, "c(?r)",
&path, ¤t_rev);
if (write_err)
break;
@@ -3009,7 +3022,7 @@ unlock(svn_ra_svn_conn_t *conn,
const char *path, *token, *full_path;
svn_boolean_t break_lock;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c(?c)b", &path, &token,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?c)b", &path, &token,
&break_lock));
full_path = svn_fspath__join(b->repository->fs_path->data,
@@ -3046,8 +3059,7 @@ unlock_many(svn_ra_svn_conn_t *conn,
apr_hash_index_t *hi;
struct lock_many_baton_t lmb;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "bl", &break_lock,
- &unlock_tokens));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "bl", &break_lock, &unlock_tokens));
/* Username required unless break_lock was specified. */
SVN_ERR(must_have_access(conn, pool, b, svn_authz_write, NULL, ! break_lock));
@@ -3066,7 +3078,7 @@ unlock_many(svn_ra_svn_conn_t *conn,
return svn_error_create(SVN_ERR_RA_SVN_MALFORMED_DATA, NULL,
"Unlock request should be a list of lists");
- SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?c)", &path,
+ SVN_ERR(svn_ra_svn__parse_tuple(&item->u.list, "c(?c)", &path,
&token));
if (!token)
token = "";
@@ -3124,7 +3136,7 @@ unlock_many(svn_ra_svn_conn_t *conn,
svn_pool_clear(subpool);
- write_err = svn_ra_svn__parse_tuple(&item->u.list, subpool, "c(?c)",
+ write_err = svn_ra_svn__parse_tuple(&item->u.list, "c(?c)",
&path, &token);
if (write_err)
break;
@@ -3183,7 +3195,7 @@ get_lock(svn_ra_svn_conn_t *conn,
const char *full_path;
svn_lock_t *l;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c", &path));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c", &path));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -3222,7 +3234,7 @@ get_locks(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "c?(?w)", &path, &depth_word));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c?(?w)", &path, &depth_word));
depth = depth_word ? svn_depth_from_word(depth_word) : svn_depth_infinity;
if ((depth != svn_depth_empty) &&
@@ -3305,7 +3317,7 @@ replay(svn_ra_svn_conn_t *conn,
svn_boolean_t send_deltas;
server_baton_t *b = baton;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "rrb", &rev, &low_water_mark,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "rrb", &rev, &low_water_mark,
&send_deltas));
SVN_ERR(trivial_auth_request(conn, pool, b));
@@ -3333,7 +3345,7 @@ replay_range(svn_ra_svn_conn_t *conn,
ab.server = b;
ab.conn = conn;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "rrrb", &start_rev,
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "rrrb", &start_rev,
&end_rev, &low_water_mark,
&send_deltas));
@@ -3378,7 +3390,7 @@ get_deleted_rev(svn_ra_svn_conn_t *conn,
svn_revnum_t end_revision;
svn_revnum_t revision_deleted;
- SVN_ERR(svn_ra_svn__parse_tuple(params, pool, "crr",
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "crr",
&path, &peg_revision, &end_revision));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, pool), pool);
@@ -3410,7 +3422,7 @@ get_inherited_props(svn_ra_svn_conn_t *c
ab.conn = conn;
/* Parse arguments. */
- SVN_ERR(svn_ra_svn__parse_tuple(params, iterpool, "c(?r)", &path, &rev));
+ SVN_ERR(svn_ra_svn__parse_tuple(params, "c(?r)", &path, &rev));
full_path = svn_fspath__join(b->repository->fs_path->data,
svn_relpath_canonicalize(path, iterpool),
@@ -3952,9 +3964,12 @@ construct_server_baton(server_baton_t **
sizeof(const char *));
for (i = 0; i < caplist->nelts; i++)
{
+ static const svn_string_t str_cap_mergeinfo
+ = SVN__STATIC_STRING(SVN_RA_SVN_CAP_MERGEINFO);
+
item = &SVN_RA_SVN__LIST_ITEM(caplist, i);
/* ra_svn_set_capabilities() already type-checked for us */
- if (strcmp(item->u.word, SVN_RA_SVN_CAP_MERGEINFO) == 0)
+ if (svn_string_compare(&item->u.word, &str_cap_mergeinfo))
{
APR_ARRAY_PUSH(b->repository->capabilities, const char *)
= SVN_RA_CAPABILITY_MERGEINFO;
@@ -3962,7 +3977,7 @@ construct_server_baton(server_baton_t **
/* Save for operational log. */
if (cap_log->len > 0)
svn_stringbuf_appendcstr(cap_log, " ");
- svn_stringbuf_appendcstr(cap_log, item->u.word);
+ svn_stringbuf_appendcstr(cap_log, item->u.word.data);
}
}
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/davautocheck.sh Mon Oct 26 08:43:06 2015
@@ -163,7 +163,8 @@ get_prog_name() {
}
# Don't assume sbin is in the PATH.
-# ### Presumably this is used to locate /usr/sbin/apxs or /usr/sbin/apache2
+# This is used to locate apxs when the script is invoked manually; when
+# invoked by 'make davautocheck' the APXS environment variable is set.
PATH="$PATH:/usr/sbin:/usr/local/sbin"
# Find the source and build directories. The build dir can be found if it is
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py Mon Oct 26 08:43:06 2015
@@ -681,8 +681,7 @@ V %d
%s
END
""" % (len(cert_rep), cert_rep, len(netloc_url), netloc_url)
-
- file_write(md5_file, md5_file_contents)
+ file_write(md5_file, md5_file_contents, mode='wb')
def copy_trust(dst_cfgdir, src_cfgdir):
"""Copy svn.ssl.server files from one config dir to another.
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=1710531&r1=1710530&r2=1710531&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 Oct 26 08:43:06 2015
@@ -334,6 +334,7 @@ txn_names_are_not_reused_helper1(apr_has
apr_hash_index_t *hi;
const int N = 10;
int i;
+ apr_pool_t *subpool = svn_pool_create(pool);
*txn_names = apr_hash_make(pool);
@@ -343,7 +344,8 @@ txn_names_are_not_reused_helper1(apr_has
{
svn_fs_txn_t *txn;
const char *name;
- SVN_ERR(svn_fs_begin_txn(&txn, fs, 0, pool));
+
+ SVN_ERR(svn_fs_begin_txn(&txn, fs, 0, subpool));
SVN_ERR(svn_fs_txn_name(&name, txn, pool));
if (apr_hash_get(*txn_names, name, APR_HASH_KEY_STRING) != NULL)
return svn_error_createf(SVN_ERR_FS_GENERAL, NULL,
@@ -367,6 +369,7 @@ txn_names_are_not_reused_helper1(apr_has
"created %d transactions, but only aborted %d",
N, i);
+ svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -1018,8 +1021,9 @@ check_entry(svn_fs_root_t *root,
{
apr_hash_t *entries;
svn_fs_dirent_t *ent;
+ apr_pool_t *subpool = svn_pool_create(pool);
- SVN_ERR(svn_fs_dir_entries(&entries, root, path, pool));
+ SVN_ERR(svn_fs_dir_entries(&entries, root, path, subpool));
ent = apr_hash_get(entries, name, APR_HASH_KEY_STRING);
if (ent)
@@ -1027,6 +1031,7 @@ check_entry(svn_fs_root_t *root,
else
*present = FALSE;
+ svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -4761,6 +4766,7 @@ closest_copy_test(const svn_test_opts_t
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_test__create_greek_tree(txn_root, spool));
SVN_ERR(test_commit_txn(&after_rev, txn, NULL, spool));
+ svn_pool_clear(spool);
SVN_ERR(svn_fs_revision_root(&rev_root, fs, after_rev, spool));
/* Copy A to Z, and commit. */
@@ -4768,6 +4774,7 @@ closest_copy_test(const svn_test_opts_t
SVN_ERR(svn_fs_txn_root(&txn_root, txn, spool));
SVN_ERR(svn_fs_copy(rev_root, "A", txn_root, "Z", spool));
SVN_ERR(test_commit_txn(&after_rev, txn, NULL, spool));
+ svn_pool_clear(spool);
SVN_ERR(svn_fs_revision_root(&rev_root, fs, after_rev, spool));
/* Anything under Z should have a closest copy pair of ("/Z", 2), so
@@ -4804,6 +4811,7 @@ closest_copy_test(const svn_test_opts_t
SVN_ERR(svn_fs_make_file(txn_root, "Z/t", pool));
SVN_ERR(svn_fs_make_file(txn_root, "Z2/D/H2/t", pool));
SVN_ERR(test_commit_txn(&after_rev, txn, NULL, spool));
+ svn_pool_clear(spool);
SVN_ERR(svn_fs_revision_root(&rev_root, fs, after_rev, spool));
/* Okay, just for kicks, let's modify Z2/D/H2/t. Shouldn't affect
@@ -4813,6 +4821,7 @@ closest_copy_test(const svn_test_opts_t
SVN_ERR(svn_test__set_file_contents(txn_root, "Z2/D/H2/t",
"Edited text.", spool));
SVN_ERR(test_commit_txn(&after_rev, txn, NULL, spool));
+ svn_pool_clear(spool);
SVN_ERR(svn_fs_revision_root(&rev_root, fs, after_rev, spool));
/* Now, we expect Z2/D/H2 to have a closest copy of ("/Z2/D/H2", 3)
@@ -6496,6 +6505,7 @@ test_delta_file_stream(const svn_test_op
svn_fs_txn_t *txn;
svn_fs_root_t *txn_root, *root1, *root2;
svn_revnum_t rev;
+ apr_pool_t *subpool = svn_pool_create(pool);
const char *old_content = "some content";
const char *new_content = "some more content";
@@ -6527,52 +6537,56 @@ test_delta_file_stream(const svn_test_op
/* Test 1: Get delta against empty target. */
SVN_ERR(svn_fs_get_file_delta_stream(&delta_stream,
- NULL, NULL, root1, "foo", pool));
+ NULL, NULL, root1, "foo", subpool));
svn_stringbuf_setempty(source);
svn_stringbuf_setempty(dest);
- svn_txdelta_apply(svn_stream_from_stringbuf(source, pool),
- svn_stream_from_stringbuf(dest, pool),
- NULL, NULL, pool, &delta_handler, &delta_baton);
+ svn_txdelta_apply(svn_stream_from_stringbuf(source, subpool),
+ svn_stream_from_stringbuf(dest, subpool),
+ NULL, NULL, subpool, &delta_handler, &delta_baton);
SVN_ERR(svn_txdelta_send_txstream(delta_stream,
delta_handler,
delta_baton,
- pool));
+ subpool));
SVN_TEST_STRING_ASSERT(old_content, dest->data);
+ svn_pool_clear(subpool);
/* Test 2: Get delta against previous version. */
SVN_ERR(svn_fs_get_file_delta_stream(&delta_stream,
- root1, "foo", root2, "foo", pool));
+ root1, "foo", root2, "foo", subpool));
svn_stringbuf_set(source, old_content);
svn_stringbuf_setempty(dest);
- svn_txdelta_apply(svn_stream_from_stringbuf(source, pool),
- svn_stream_from_stringbuf(dest, pool),
- NULL, NULL, pool, &delta_handler, &delta_baton);
+ svn_txdelta_apply(svn_stream_from_stringbuf(source, subpool),
+ svn_stream_from_stringbuf(dest, subpool),
+ NULL, NULL, subpool, &delta_handler, &delta_baton);
SVN_ERR(svn_txdelta_send_txstream(delta_stream,
delta_handler,
delta_baton,
- pool));
+ subpool));
SVN_TEST_STRING_ASSERT(new_content, dest->data);
+ svn_pool_clear(subpool);
/* Test 3: Get reverse delta. */
SVN_ERR(svn_fs_get_file_delta_stream(&delta_stream,
- root2, "foo", root1, "foo", pool));
+ root2, "foo", root1, "foo", subpool));
svn_stringbuf_set(source, new_content);
svn_stringbuf_setempty(dest);
- svn_txdelta_apply(svn_stream_from_stringbuf(source, pool),
- svn_stream_from_stringbuf(dest, pool),
- NULL, NULL, pool, &delta_handler, &delta_baton);
+ svn_txdelta_apply(svn_stream_from_stringbuf(source, subpool),
+ svn_stream_from_stringbuf(dest, subpool),
+ NULL, NULL, subpool, &delta_handler, &delta_baton);
SVN_ERR(svn_txdelta_send_txstream(delta_stream,
delta_handler,
delta_baton,
- pool));
+ subpool));
SVN_TEST_STRING_ASSERT(old_content, dest->data);
+ svn_pool_destroy(subpool);
+
return SVN_NO_ERROR;
}
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=1710531&r1=1710530&r2=1710531&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 Oct 26 08:43:06 2015
@@ -364,15 +364,17 @@ svn_test__set_file_contents(svn_fs_root_
svn_txdelta_window_handler_t consumer_func;
void *consumer_baton;
svn_string_t string;
+ apr_pool_t *subpool = svn_pool_create(pool);
SVN_ERR(svn_fs_apply_textdelta(&consumer_func, &consumer_baton,
- root, path, NULL, NULL, pool));
+ root, path, NULL, NULL, subpool));
string.data = contents;
string.len = strlen(contents);
SVN_ERR(svn_txdelta_send_string(&string, consumer_func,
- consumer_baton, pool));
+ consumer_baton, subpool));
+ svn_pool_destroy(subpool);
return SVN_NO_ERROR;
}
@@ -847,6 +849,7 @@ svn_test__create_blame_repository(svn_re
svn_fs_txn_t *txn;
svn_fs_root_t *txn_root, *revision_root;
svn_revnum_t youngest_rev = 0;
+ apr_pool_t *subpool = svn_pool_create(pool);
/* Create a filesystem and repository. */
SVN_ERR(svn_test__create_repos(&repos, test_name,
@@ -857,87 +860,96 @@ svn_test__create_blame_repository(svn_re
/* Revision 1: Add trunk, tags, branches. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "initial", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
- SVN_ERR(svn_fs_make_dir(txn_root, "trunk", pool));
- SVN_ERR(svn_fs_make_dir(txn_root, "tags", pool));
- SVN_ERR(svn_fs_make_dir(txn_root, "branches", pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ "initial", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
+ SVN_ERR(svn_fs_make_dir(txn_root, "trunk", subpool));
+ SVN_ERR(svn_fs_make_dir(txn_root, "tags", subpool));
+ SVN_ERR(svn_fs_make_dir(txn_root, "branches", subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 2: Add the Greek tree on the trunk. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "initial", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
- SVN_ERR(svn_test__create_greek_tree_at(txn_root, "trunk", pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ "initial", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
+ SVN_ERR(svn_test__create_greek_tree_at(txn_root, "trunk", subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 3: Tweak trunk/A/mu. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "user-trunk", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ "user-trunk", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "trunk/A/mu",
- "A\nB\nC\nD\nE\nF\nG\nH\nI", pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ "A\nB\nC\nD\nE\nF\nG\nH\nI", subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 4: Copy trunk to branches/1.0.x. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "copy", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
- SVN_ERR(svn_fs_revision_root(&revision_root, fs, youngest_rev, pool));
+ "copy", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
+ SVN_ERR(svn_fs_revision_root(&revision_root, fs, youngest_rev, subpool));
SVN_ERR(svn_fs_copy(revision_root, "trunk",
txn_root, "branches/1.0.x",
- pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 5: Tweak trunk/A/mu. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "user-trunk", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ "user-trunk", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "trunk/A/mu",
"A\nB\nC -- trunk edit\nD\nE\nF\nG\nH\nI",
- pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 6: Tweak branches/1.0.x/A/mu. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "user-branch", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ "user-branch", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "branches/1.0.x/A/mu",
"A\nB\nC\nD -- branch edit\nE\nF\nG\nH\nI",
- pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 7: Merge trunk to branch. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "user-merge1", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ "user-merge1", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "branches/1.0.x/A/mu",
"A\nB\nC -- trunk edit\nD -- branch edit"
- "\nE\nF\nG\nH\nI", pool));
+ "\nE\nF\nG\nH\nI", subpool));
SVN_ERR(svn_fs_change_node_prop(txn_root, "/branches/1.0.x", "svn:mergeinfo",
- svn_string_create("/trunk:4-6", pool),
- pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ svn_string_create("/trunk:4-6", subpool),
+ subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_clear(subpool);
/* Revision 8: Merge branch to trunk. */
SVN_ERR(svn_repos_fs_begin_txn_for_commit(&txn, repos, youngest_rev,
- "user-merge2", "log msg", pool));
- SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+ "user-merge2", "log msg", subpool));
+ SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool));
SVN_ERR(svn_test__set_file_contents(txn_root, "trunk/A/mu",
"A\nB\nC -- trunk edit\nD -- branch edit\n"
- "E\nF\nG\nH\nI", pool));
+ "E\nF\nG\nH\nI", subpool));
SVN_ERR(svn_fs_change_node_prop(txn_root, "/trunk", "svn:mergeinfo",
- svn_string_create("/branches/1.0.x:4-7", pool),
- pool));
- SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, pool));
+ svn_string_create("/branches/1.0.x:4-7", subpool),
+ subpool));
+ SVN_ERR(svn_repos_fs_commit_txn(NULL, repos, &youngest_rev, txn, subpool));
SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(youngest_rev));
+ svn_pool_destroy(subpool);
+
return SVN_NO_ERROR;
}
Propchange: subversion/branches/move-tracking-2/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 26 08:43:06 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/tools:1462039-1462408
/subversion/branches/verify-keep-going/tools:1439280-1546110
/subversion/branches/wc-collate-path/tools:1402685-1480384
-/subversion/trunk/tools:1606692-1708078
+/subversion/trunk/tools:1606692-1710529
Modified: subversion/branches/move-tracking-2/tools/dev/x509-parser.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dev/x509-parser.c?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dev/x509-parser.c (original)
+++ subversion/branches/move-tracking-2/tools/dev/x509-parser.c Mon Oct 26 08:43:06 2015
@@ -94,7 +94,8 @@ get_der_cert_from_stream(const svn_strin
apr_pool_t *pool)
{
svn_string_t *raw;
- SVN_ERR(svn_string_from_stream(&raw, in, pool, pool));
+ SVN_ERR(svn_string_from_stream2(&raw, in, SVN__STREAM_CHUNK_SIZE,
+ pool));
*der_cert = NULL;
Modified: subversion/branches/move-tracking-2/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/win-tests.py?rev=1710531&r1=1710530&r2=1710531&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/win-tests.py (original)
+++ subversion/branches/move-tracking-2/win-tests.py Mon Oct 26 08:43:06 2015
@@ -32,6 +32,7 @@ import filecmp
import shutil
import traceback
import logging
+import re
try:
# Python >=3.0
import configparser
@@ -129,7 +130,7 @@ gen_obj = gen_win_dependencies.GenDepend
opts, args = my_getopt(sys.argv[1:], 'hrdvqct:pu:f:',
['release', 'debug', 'verbose', 'quiet', 'cleanup',
'test=', 'url=', 'svnserve-args=', 'fs-type=', 'asp.net-hack',
- 'httpd-dir=', 'httpd-port=', 'httpd-daemon',
+ 'httpd-dir=', 'httpd-port=', 'httpd-daemon', 'https',
'httpd-server', 'http-short-circuit', 'httpd-no-log',
'disable-http-v2', 'disable-bulk-updates', 'help',
'fsfs-packing', 'fsfs-sharding=', 'javahl', 'swig=',
@@ -154,6 +155,7 @@ run_httpd = None
httpd_port = None
httpd_service = None
httpd_no_log = None
+use_ssl = False
http_short_circuit = False
advertise_httpv2 = True
http_bulk_updates = True
@@ -214,6 +216,8 @@ for opt, val in opts:
httpd_service = 1
elif opt == '--httpd-no-log':
httpd_no_log = 1
+ elif opt == '--https':
+ use_ssl = 1
elif opt == '--http-short-circuit':
http_short_circuit = True
elif opt == '--disable-http-v2':
@@ -292,7 +296,12 @@ if run_httpd:
if not httpd_port:
httpd_port = random.randrange(1024, 30000)
if not base_url:
- base_url = 'http://localhost:' + str(httpd_port)
+ if use_ssl:
+ scheme = 'https'
+ else:
+ scheme = 'http'
+
+ base_url = '%s://localhost:%d' % (scheme, httpd_port)
if base_url:
repo_loc = 'remote repository ' + base_url + '.'
@@ -449,8 +458,9 @@ class Svnserve:
class Httpd:
"Run httpd for DAV tests"
- def __init__(self, abs_httpd_dir, abs_objdir, abs_builddir, httpd_port,
- service, no_log, httpv2, short_circuit, bulk_updates):
+ def __init__(self, abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
+ httpd_port, service, use_ssl, no_log, httpv2, short_circuit,
+ bulk_updates):
self.name = 'apache.exe'
self.httpd_port = httpd_port
self.httpd_dir = abs_httpd_dir
@@ -488,12 +498,19 @@ class Httpd:
self.dontdothat_file = os.path.join(abs_builddir,
CMDLINE_TEST_SCRIPT_NATIVE_PATH,
'svn-test-work', 'dontdothat')
+ self.certfile = os.path.join(abs_builddir,
+ CMDLINE_TEST_SCRIPT_NATIVE_PATH,
+ 'svn-test-work', 'cert.pem')
+ self.certkeyfile = os.path.join(abs_builddir,
+ CMDLINE_TEST_SCRIPT_NATIVE_PATH,
+ 'svn-test-work', 'cert-key.pem')
self.httpd_config = os.path.join(self.root, 'httpd.conf')
self.httpd_users = os.path.join(self.root, 'users')
self.httpd_mime_types = os.path.join(self.root, 'mime.types')
self.httpd_groups = os.path.join(self.root, 'groups')
self.abs_builddir = abs_builddir
self.abs_objdir = abs_objdir
+ self.abs_srcdir = abs_srcdir
self.service_name = 'svn-test-httpd-' + str(httpd_port)
if self.service:
@@ -509,6 +526,9 @@ class Httpd:
self._create_mime_types_file()
self._create_dontdothat_file()
+ if use_ssl:
+ self._create_cert_files()
+
# Obtain version.
version_vals = gen_obj._libraries['httpd'].version.split('.')
self.httpd_ver = float('%s.%s' % (version_vals[0], version_vals[1]))
@@ -537,6 +557,8 @@ class Httpd:
fp.write('LogLevel Crit\n')
# Write LoadModule for minimal system module
+ if use_ssl:
+ fp.write(self._sys_module('ssl_module', 'mod_ssl.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'))
@@ -561,6 +583,11 @@ class Httpd:
# And for mod_dontdothat
fp.write(self._svn_module('dontdothat_module', 'mod_dontdothat.so'))
+ if use_ssl:
+ fp.write('SSLEngine on\n')
+ fp.write('SSLCertificateFile %s\n' % self._quote(self.certfile))
+ fp.write('SSLCertificateKeyFile %s\n' % self._quote(self.certkeyfile))
+
# Don't handle .htaccess, symlinks, etc.
fp.write('<Directory />\n')
fp.write('AllowOverride None\n')
@@ -633,6 +660,34 @@ class Httpd:
fp.write('/ = deny\n')
fp.close()
+ def _create_cert_files(self):
+ "Create certificate files"
+ # The unix build uses certificates encoded in davautocheck.sh
+ # Let's just read them from there
+
+ sh_path = os.path.join(self.abs_srcdir, 'subversion', 'tests', 'cmdline',
+ 'davautocheck.sh')
+ sh = open(sh_path).readlines()
+
+ def cert_extract(lines, what):
+ r = []
+ pattern = r'cat\s*\>\s*' + re.escape(what) + r'\s*\<\<([A-Z_a-z0-9]+)'
+ exit_marker = None
+ for i in lines:
+ if exit_marker:
+ if i.startswith(exit_marker):
+ return r
+ r.append(i)
+ else:
+ m = re.match(pattern, i)
+ if m:
+ exit_marker = m.groups(1)
+
+ cert_file = cert_extract(sh, '"$SSL_CERTIFICATE_FILE"')
+ cert_key = cert_extract(sh, '"$SSL_CERTIFICATE_KEY_FILE"')
+ open(self.certfile, 'w').write(''.join(cert_file))
+ open(self.certkeyfile, 'w').write(''.join(cert_key))
+
def _sys_module(self, name, path):
full_path = os.path.join(self.httpd_dir, 'modules', path)
return 'LoadModule ' + name + " " + self._quote(full_path) + '\n'
@@ -940,11 +995,14 @@ if not list_tests:
daemon = Svnserve(svnserve_args, objdir, abs_objdir, abs_builddir)
if run_httpd:
- daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, httpd_port,
- httpd_service, httpd_no_log,
- advertise_httpv2, http_short_circuit,
+ daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
+ httpd_port, httpd_service, use_ssl,
+ httpd_no_log, advertise_httpv2, http_short_circuit,
http_bulk_updates)
+ if use_ssl and not ssl_cert:
+ ssl_cert = daemon.certfile
+
# Start service daemon, if any
if daemon:
daemon.start()
Propchange: subversion/branches/move-tracking-2/win-tests.py
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 26 08:43:06 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-1706962
+/subversion/trunk/win-tests.py:1606692-1710529