You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/08/07 02:02:32 UTC
svn commit: r1511151 [2/2] - in /subversion/branches/log-addressing: ./
build/generator/ subversion/ subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/bindings/javahl/src/org/apache/subversion/ja...
Propchange: subversion/branches/log-addressing/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Aug 7 00:02:30 2013
@@ -0,0 +1,11 @@
+Debug
+Release
+*.lo
+*.la
+.libs
+*.la-a
+*.o
+*~
+.*~
+rep-cache-db.h
+revprops-db.h
Propchange: subversion/branches/log-addressing/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Aug 7 00:02:30 2013
@@ -0,0 +1,81 @@
+/subversion/branches/1.5.x-r30215/subversion/libsvn_fs_x:870312
+/subversion/branches/1.7.x-fs-verify/subversion/libsvn_fs_x:1146708,1161180
+/subversion/branches/10Gb/subversion/libsvn_fs_x:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/subversion/libsvn_fs_x:965046-1000689
+/subversion/branches/auto-props-sdc/subversion/libsvn_fs_x:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/subversion/libsvn_fs_x:872050-872529
+/subversion/branches/cache-server/subversion/libsvn_fs_x:1458643-1476567
+/subversion/branches/diff-callbacks3/subversion/libsvn_fs_x:870059-870761
+/subversion/branches/diff-optimizations/subversion/libsvn_fs_x:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/libsvn_fs_x:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_fs_x:870728-871118
+/subversion/branches/double-delete/subversion/libsvn_fs_x:870511-872970
+/subversion/branches/ev2-export/subversion/libsvn_fs_x:1325914,1332738,1413107
+/subversion/branches/explore-wc/subversion/libsvn_fs_x:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/subversion/libsvn_fs_x:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/libsvn_fs_x:869036-873803
+/subversion/branches/fsfs-format7/subversion/libsvn_fs_x:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507732,1507735-1507736
+/subversion/branches/fsfs-improvements/subversion/libsvn_fs_x:1509279-1511149
+/subversion/branches/fsfs-pack/subversion/libsvn_fs_x:873717-874575
+/subversion/branches/fsx/subversion/libsvn_fs_x:1507845-1509914
+/subversion/branches/gnome-keyring/subversion/libsvn_fs_x:870558-871410
+/subversion/branches/gpg-agent-password-store/subversion/libsvn_fs_x:1005036-1150766
+/subversion/branches/gtest_addition/subversion/libsvn_fs_x:1452117-1502138
+/subversion/branches/http-protocol-v2/subversion/libsvn_fs_x:874395-876041
+/subversion/branches/in-memory-cache/subversion/libsvn_fs_x:869829-871452
+/subversion/branches/in-repo-authz/subversion/libsvn_fs_x:1414342-1424779
+/subversion/branches/inheritable-props/subversion/libsvn_fs_x:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/subversion/libsvn_fs_x:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/libsvn_fs_x:998649-998852
+/subversion/branches/integrate-compression-level/subversion/libsvn_fs_x:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/libsvn_fs_x:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/libsvn_fs_x:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/libsvn_fs_x:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/libsvn_fs_x:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/libsvn_fs_x:1068695-1072516
+/subversion/branches/integrate-string-improvements/subversion/libsvn_fs_x:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/subversion/libsvn_fs_x:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/libsvn_fs_x:965496-984198
+/subversion/branches/issue-2843-dev/subversion/libsvn_fs_x:871432-874179
+/subversion/branches/issue-3000/subversion/libsvn_fs_x:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/libsvn_fs_x:873375-874084
+/subversion/branches/issue-3148-dev/subversion/libsvn_fs_x:875193-875204
+/subversion/branches/issue-3220-dev/subversion/libsvn_fs_x:872210-872226
+/subversion/branches/issue-3242-dev/subversion/libsvn_fs_x:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/libsvn_fs_x:875156-875867
+/subversion/branches/issue-3975/subversion/libsvn_fs_x:1152931-1160746
+/subversion/branches/issue-4116-dev/subversion/libsvn_fs_x:1424719-1425040
+/subversion/branches/issue-4194-dev/subversion/libsvn_fs_x:1410507-1414880
+/subversion/branches/javahl-ra/subversion/libsvn_fs_x:991978-1494640
+/subversion/branches/kwallet/subversion/libsvn_fs_x:870785-871314
+/subversion/branches/log-g-performance/subversion/libsvn_fs_x:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/libsvn_fs_x:874525-874615
+/subversion/branches/multi-layer-moves/subversion/libsvn_fs_x:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/subversion/libsvn_fs_x:870276,870376
+/subversion/branches/node_pool/subversion/libsvn_fs_x:1304828-1305388
+/subversion/branches/performance/subversion/libsvn_fs_x:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-1029336,102
9339-1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/py-tests-as-modules/subversion/libsvn_fs_x:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/libsvn_fs_x:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/libsvn_fs_x:873853-874164
+/subversion/branches/revprop-cache/subversion/libsvn_fs_x:1298521-1326293
+/subversion/branches/revprop-packing/subversion/libsvn_fs_x:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/subversion/libsvn_fs_x:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/libsvn_fs_x:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/libsvn_fs_x:918519-934609
+/subversion/branches/svn_mutex/subversion/libsvn_fs_x:1141683-1182099
+/subversion/branches/svnpatch-diff/subversion/libsvn_fs_x:865738-876477
+/subversion/branches/svnraisetc/subversion/libsvn_fs_x:874709-875149
+/subversion/branches/svnserve-logging/subversion/libsvn_fs_x:869828-870893
+/subversion/branches/tc-issue-3334/subversion/libsvn_fs_x:874697-874773
+/subversion/branches/tc-merge-notify/subversion/libsvn_fs_x:874017-874062
+/subversion/branches/tc-resolve/subversion/libsvn_fs_x:874191-874239
+/subversion/branches/tc_url_rev/subversion/libsvn_fs_x:874351-874483
+/subversion/branches/tree-conflicts/subversion/libsvn_fs_x:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/libsvn_fs_x:873926-874008
+/subversion/branches/tristate-chunked-request/subversion/libsvn_fs_x:1502394-1502681
+/subversion/branches/tweak-build-take-two/subversion/libsvn_fs_x:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/subversion/libsvn_fs_x:1060426-1064427
+/subversion/branches/verify-at-commit/subversion/libsvn_fs_x:1462039-1462408
+/subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639
+/subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1511145
Modified: subversion/branches/log-addressing/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_ra_serf/util.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_ra_serf/util.c Wed Aug 7 00:02:30 2013
@@ -2434,6 +2434,10 @@ svn_ra_serf__error_on_status(serf_status
"server or an intermediate proxy does not accept "
"chunked encoding. Try setting 'http-chunked-requests' "
"to 'auto' or 'no' in your client configuration."));
+ case 501:
+ return svn_error_createf(SVN_ERR_UNSUPPORTED_FEATURE, NULL,
+ _("The requested feature is not supported by "
+ "'%s'"), path);
}
if (sline.code >= 300)
Modified: subversion/branches/log-addressing/subversion/libsvn_subr/sorts.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_subr/sorts.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_subr/sorts.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_subr/sorts.c Wed Aug 7 00:02:30 2013
@@ -309,3 +309,148 @@ svn_sort__array_reverse(apr_array_header
}
}
}
+
+/* Our priority queue data structure:
+ * Simply remember the constructor parameters.
+ */
+struct svn_priority_queue__t
+{
+ /* the queue elements, ordered as a heap according to COMPARE_FUNC */
+ apr_array_header_t *elements;
+
+ /* predicate used to order the heap */
+ int (*compare_func)(const void *, const void *);
+};
+
+/* Return TRUE, if heap element number LHS in QUEUE is smaller than element
+ * number RHS according to QUEUE->COMPARE_FUNC
+ */
+static int
+heap_is_less(svn_priority_queue__t *queue,
+ apr_size_t lhs,
+ apr_size_t rhs)
+{
+ char *lhs_value = queue->elements->elts + lhs * queue->elements->elt_size;
+ char *rhs_value = queue->elements->elts + rhs * queue->elements->elt_size;
+
+ assert(lhs < queue->elements->nelts);
+ assert(rhs < queue->elements->nelts);
+ return queue->compare_func((void *)lhs_value, (void *)rhs_value) < 0;
+}
+
+/* Exchange elements number LHS and RHS in QUEUE.
+ */
+static void
+heap_swap(svn_priority_queue__t *queue,
+ apr_size_t lhs,
+ apr_size_t rhs)
+{
+ int i;
+ char *lhs_value = queue->elements->elts + lhs * queue->elements->elt_size;
+ char *rhs_value = queue->elements->elts + rhs * queue->elements->elt_size;
+
+ for (i = 0; i < queue->elements->elt_size; ++i)
+ {
+ char temp = lhs_value[i];
+ lhs_value[i] = rhs_value[i];
+ rhs_value[i] = temp;
+ }
+}
+
+/* Move element number IDX to lower indexes until the heap criterion is
+ * fulfilled again.
+ */
+static void
+heap_bubble_down(svn_priority_queue__t *queue,
+ int idx)
+{
+ while (idx > 0 && heap_is_less(queue, idx, (idx - 1) / 2))
+ {
+ heap_swap(queue, idx, (idx - 1) / 2);
+ idx = (idx - 1) / 2;
+ }
+}
+
+/* Move element number IDX to higher indexes until the heap criterion is
+ * fulfilled again.
+ */
+static void
+heap_bubble_up(svn_priority_queue__t *queue,
+ int idx)
+{
+ while (2 * idx + 2 < queue->elements->nelts)
+ {
+ int child = heap_is_less(queue, 2 * idx + 1, 2 * idx + 2)
+ ? 2 * idx + 1
+ : 2 * idx + 2;
+
+ if (heap_is_less(queue, idx, child))
+ return;
+
+ heap_swap(queue, idx, child);
+ idx = child;
+ }
+
+ if ( 2 * idx + 1 < queue->elements->nelts
+ && heap_is_less(queue, 2 * idx + 1, idx))
+ heap_swap(queue, 2 * idx + 1, idx);
+}
+
+svn_priority_queue__t *
+svn_priority_queue__create(apr_array_header_t *elements,
+ int (*compare_func)(const void *, const void *))
+{
+ int i;
+
+ svn_priority_queue__t *queue = apr_pcalloc(elements->pool, sizeof(*queue));
+ queue->elements = elements;
+ queue->compare_func = compare_func;
+
+ for (i = elements->nelts / 2; i >= 0; --i)
+ heap_bubble_up(queue, i);
+
+ return queue;
+}
+
+apr_size_t
+svn_priority_queue__size(svn_priority_queue__t *queue)
+{
+ return queue->elements->nelts;
+}
+
+void *
+svn_priority_queue__peek(svn_priority_queue__t *queue)
+{
+ return queue->elements->nelts ? queue->elements->elts : NULL;
+}
+
+void
+svn_priority_queue__update(svn_priority_queue__t *queue)
+{
+ heap_bubble_up(queue, 0);
+}
+
+void
+svn_priority_queue__pop(svn_priority_queue__t *queue)
+{
+ if (queue->elements->nelts)
+ {
+ memcpy(queue->elements->elts,
+ queue->elements->elts + (queue->elements->nelts - 1)
+ * queue->elements->elt_size,
+ queue->elements->elt_size);
+ --queue->elements->nelts;
+ heap_bubble_up(queue, 0);
+ }
+}
+
+void
+svn_priority_queue__push(svn_priority_queue__t *queue,
+ const void *element)
+{
+ /* we cannot duplicate elements due to potential array re-allocs */
+ assert(element && element != queue->elements->elts);
+
+ memcpy(apr_array_push(queue->elements), element, queue->elements->elt_size);
+ heap_bubble_down(queue, queue->elements->nelts - 1);
+}
\ No newline at end of file
Modified: subversion/branches/log-addressing/subversion/libsvn_subr/spillbuf.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_subr/spillbuf.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_subr/spillbuf.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_subr/spillbuf.c Wed Aug 7 00:02:30 2013
@@ -77,22 +77,22 @@ struct svn_spillbuf_t {
/* When false, do not delete the spill file when it is closed. */
svn_boolean_t delete_on_close;
- /* When true, the spill file will contain all the data written to
- the spillbuf, including those that would normally be held only in
- memory. */
+ /* When true, and the amount of data written to the spillbuf is
+ larger than MAXSIZE, all spillbuf contents will be written to the
+ spill file. */
svn_boolean_t spill_all_contents;
/* The directory in which the spill file is created. */
const char *dirpath;
/* The name of the temporary spill file. */
- const char *temp_path;
+ const char *filename;
};
struct svn_spillbuf_reader_t {
/* Embed the spill-buffer within the reader. */
- struct svn_spillbuf_t buf;
+ struct svn_spillbuf_t *buf;
/* When we read content from the underlying spillbuf, these fields store
the ptr/len pair. The ptr will be incremented as we "read" out of this
@@ -185,7 +185,7 @@ svn_spillbuf__get_memory_size(const svn_
const char *
svn_spillbuf__get_filename(const svn_spillbuf_t *buf)
{
- return buf->temp_path;
+ return buf->filename;
}
apr_file_t *
@@ -245,7 +245,7 @@ svn_spillbuf__write(svn_spillbuf_t *buf,
&& (buf->memory_size + len) > buf->maxsize)
{
SVN_ERR(svn_io_open_unique_file3(&buf->spill,
- &buf->temp_path,
+ &buf->filename,
buf->dirpath,
(buf->delete_on_close
? svn_io_file_del_on_close
@@ -253,7 +253,7 @@ svn_spillbuf__write(svn_spillbuf_t *buf,
buf->pool, scratch_pool));
/* Optionally write the memory contents into the file. */
- if (buf->spill_all_contents && buf->head != NULL)
+ if (buf->spill_all_contents)
{
mem = buf->head;
while (mem != NULL)
@@ -262,6 +262,13 @@ svn_spillbuf__write(svn_spillbuf_t *buf,
NULL, scratch_pool));
mem = mem->next;
}
+
+ /* Adjust the start offset for reading from the spill file.
+
+ ### FIXME: Instead, we should simply discard the memory
+ buffers; but currently some tests expect to read data in
+ the same chunk sizes as were written, so we'll leave this
+ change for later.*/
buf->spill_start = buf->memory_size;
}
}
@@ -527,26 +534,10 @@ svn_spillbuf__reader_create(apr_size_t b
apr_pool_t *result_pool)
{
svn_spillbuf_reader_t *sbr = apr_pcalloc(result_pool, sizeof(*sbr));
- init_spillbuf(&sbr->buf, blocksize, maxsize, result_pool);
+ sbr->buf = svn_spillbuf__create(blocksize, maxsize, result_pool);
return sbr;
}
-svn_spillbuf_reader_t *
-svn_spillbuf__reader_create_extended(apr_size_t blocksize,
- apr_size_t maxsize,
- svn_boolean_t delete_on_close,
- svn_boolean_t spill_all_contents,
- const char *dirpath,
- apr_pool_t *result_pool)
-{
- svn_spillbuf_reader_t *sbr = apr_pcalloc(result_pool, sizeof(*sbr));
- init_spillbuf_extended(&sbr->buf, blocksize, maxsize,
- delete_on_close, spill_all_contents, dirpath,
- result_pool);
- return sbr;
-}
-
-
svn_error_t *
svn_spillbuf__reader_read(apr_size_t *amt,
svn_spillbuf_reader_t *reader,
@@ -585,7 +576,7 @@ svn_spillbuf__reader_read(apr_size_t *am
if (reader->sb_len == 0)
{
SVN_ERR(svn_spillbuf__read(&reader->sb_ptr, &reader->sb_len,
- &reader->buf,
+ reader->buf,
scratch_pool));
/* We've run out of content, so return with whatever has
@@ -644,7 +635,8 @@ svn_spillbuf__reader_write(svn_spillbuf_
if (reader->sb_len > 0)
{
if (reader->save_ptr == NULL)
- reader->save_ptr = apr_palloc(reader->buf.pool, reader->buf.blocksize);
+ reader->save_ptr = apr_palloc(reader->buf->pool,
+ reader->buf->blocksize);
memcpy(reader->save_ptr, reader->sb_ptr, reader->sb_len);
reader->save_len = reader->sb_len;
@@ -654,7 +646,7 @@ svn_spillbuf__reader_write(svn_spillbuf_
reader->sb_len = 0;
}
- return svn_error_trace(svn_spillbuf__write(&reader->buf, data, len,
+ return svn_error_trace(svn_spillbuf__write(reader->buf, data, len,
scratch_pool));
}
@@ -692,14 +684,15 @@ write_handler_spillbuf(void *baton, cons
}
-/* Wrap a spillbuf reader into a stream. */
-static svn_stream_t *
-stream_from_reader(svn_spillbuf_reader_t *reader, apr_pool_t *result_pool)
+svn_stream_t *
+svn_stream__from_spillbuf(svn_spillbuf_t *buf,
+ apr_pool_t *result_pool)
{
svn_stream_t *stream;
struct spillbuf_baton *sb = apr_palloc(result_pool, sizeof(*sb));
- sb->reader = reader;
+ sb->reader = apr_pcalloc(result_pool, sizeof(*sb->reader));
+ sb->reader->buf = buf;
sb->scratch_pool = svn_pool_create(result_pool);
stream = svn_stream_create(sb, result_pool);
@@ -709,28 +702,3 @@ stream_from_reader(svn_spillbuf_reader_t
return stream;
}
-
-svn_stream_t *
-svn_stream__from_spillbuf(apr_size_t blocksize,
- apr_size_t maxsize,
- apr_pool_t *result_pool)
-{
- return stream_from_reader(
- svn_spillbuf__reader_create(blocksize, maxsize, result_pool),
- result_pool);
-}
-
-svn_stream_t *
-svn_stream__from_spillbuf_extended(apr_size_t blocksize,
- apr_size_t maxsize,
- svn_boolean_t delete_on_close,
- svn_boolean_t spill_all_contents,
- const char *dirpath,
- apr_pool_t *result_pool)
-{
- return stream_from_reader(
- svn_spillbuf__reader_create_extended(
- blocksize, maxsize, delete_on_close,
- spill_all_contents, dirpath, result_pool),
- result_pool);
-}
Modified: subversion/branches/log-addressing/subversion/libsvn_subr/stream.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_subr/stream.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_subr/stream.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_subr/stream.c Wed Aug 7 00:02:30 2013
@@ -1657,7 +1657,7 @@ svn_string_from_stream(svn_string_t **re
}
-/* These are somewhat arbirary, if we ever get good empirical data as to
+/* These are somewhat arbitrary, if we ever get good empirical data as to
actually valid values, feel free to update them. */
#define BUFFER_BLOCK_SIZE 1024
#define BUFFER_MAX_SIZE 100000
@@ -1665,7 +1665,9 @@ svn_string_from_stream(svn_string_t **re
svn_stream_t *
svn_stream_buffered(apr_pool_t *result_pool)
{
- return svn_stream__from_spillbuf(BUFFER_BLOCK_SIZE, BUFFER_MAX_SIZE,
+ return svn_stream__from_spillbuf(svn_spillbuf__create(BUFFER_BLOCK_SIZE,
+ BUFFER_MAX_SIZE,
+ result_pool),
result_pool);
}
Modified: subversion/branches/log-addressing/subversion/libsvn_subr/string.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/libsvn_subr/string.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/libsvn_subr/string.c (original)
+++ subversion/branches/log-addressing/subversion/libsvn_subr/string.c Wed Aug 7 00:02:30 2013
@@ -606,6 +606,21 @@ svn_stringbuf_appendbytes(svn_stringbuf_
to null-terminate. */
}
+void
+svn_stringbuf_appendfill(svn_stringbuf_t *str,
+ char byte,
+ apr_size_t count)
+{
+ apr_size_t new_len = str->len + count;
+ svn_stringbuf_ensure(str, new_len);
+
+ memset(str->data + str->len, byte, count);
+
+ /* update buffer length and always NUL-terminate it */
+ str->len = new_len;
+ str->data[new_len] = '\0';
+}
+
void
svn_stringbuf_appendstr(svn_stringbuf_t *targetstr,
Modified: subversion/branches/log-addressing/subversion/mod_dav_svn/mod_dav_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/mod_dav_svn/mod_dav_svn.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/mod_dav_svn/mod_dav_svn.c (original)
+++ subversion/branches/log-addressing/subversion/mod_dav_svn/mod_dav_svn.c Wed Aug 7 00:02:30 2013
@@ -217,6 +217,7 @@ create_dir_config(apr_pool_t *p, char *d
conf->bulk_updates = CONF_BULKUPD_ON;
conf->v2_protocol = CONF_FLAG_ON;
conf->hooks_env = NULL;
+ conf->txdelta_cache = CONF_FLAG_ON;
return conf;
}
@@ -1173,7 +1174,7 @@ static const command_rec cmds[] =
ACCESS_CONF|RSRC_CONF,
"speeds up data access to older revisions by caching "
"delta information if sufficient in-memory cache is "
- "available (default is Off)."),
+ "available (default is On)."),
/* per directory/location */
AP_INIT_FLAG("SVNCacheFullTexts", SVNCacheFullTexts_cmd, NULL,
Modified: subversion/branches/log-addressing/subversion/svn_private_config.hw
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/svn_private_config.hw?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/svn_private_config.hw (original)
+++ subversion/branches/log-addressing/subversion/svn_private_config.hw Wed Aug 7 00:02:30 2013
@@ -57,6 +57,9 @@
/* Link fs fs library into the fs library */
#define SVN_LIBSVN_FS_LINKS_FS_FS
+/* Link fs fs library into the fs library */
+#define SVN_LIBSVN_FS_LINKS_FS_X
+
/* Link local repos access library to client */
#define SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL
Modified: subversion/branches/log-addressing/subversion/svnadmin/svnadmin.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/svnadmin/svnadmin.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/log-addressing/subversion/svnadmin/svnadmin.c Wed Aug 7 00:02:30 2013
@@ -243,7 +243,9 @@ static const apr_getopt_option_t options
N_("set repos UUID to that found in stream, if any")},
{"fs-type", svnadmin__fs_type, 1,
- N_("type of repository: 'fsfs' (default) or 'bdb'")},
+ N_("type of repository:\n"
+ " 'fsfs' (default), 'bdb' or 'fsx'\n"
+ " CAUTION: FSX is for EXPERIMENTAL use only!")},
{"parent-dir", svnadmin__parent_dir, 1,
N_("load at specified directory in repository")},
@@ -419,7 +421,7 @@ static const svn_opt_subcommand_desc2_t
("usage: svnadmin pack REPOS_PATH\n\n"
"Possibly compact the repository into a more efficient storage model.\n"
"This may not apply to all repositories, in which case, exit.\n"),
- {'q'} },
+ {'q', 'M'} },
{"recover", subcommand_recover, {0}, N_
("usage: svnadmin recover REPOS_PATH\n\n"
@@ -698,18 +700,39 @@ subcommand_create(apr_getopt_t *os, void
svn_hash_sets(fs_config, SVN_FS_CONFIG_PRE_1_6_COMPATIBLE, "1");
if (! svn_version__at_least(opt_state->compatible_version, 1, 8, 0))
svn_hash_sets(fs_config, SVN_FS_CONFIG_PRE_1_8_COMPATIBLE, "1");
+ /* In 1.9, we figured out that we didn't have to keep extending this
+ madness indefinitely. */
+ svn_hash_sets(fs_config, SVN_FS_CONFIG_COMPATIBLE_VERSION,
+ apr_psprintf(pool, "%d.%d.%d%s%s",
+ opt_state->compatible_version->major,
+ opt_state->compatible_version->minor,
+ opt_state->compatible_version->patch,
+ opt_state->compatible_version->tag
+ ? "-" : "",
+ opt_state->compatible_version->tag));
}
- if (opt_state->compatible_version
- && ! svn_version__at_least(opt_state->compatible_version, 1, 1, 0)
- /* ### TODO: this NULL check hard-codes knowledge of the library's
- default fs-type value */
- && (opt_state->fs_type == NULL
- || !strcmp(opt_state->fs_type, SVN_FS_TYPE_FSFS)))
+ if (opt_state->compatible_version)
{
- return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("Repositories compatible with 1.0.x must use "
- "--fs-type=bdb"));
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 1, 0)
+ /* ### TODO: this NULL check hard-codes knowledge of the library's
+ default fs-type value */
+ && (opt_state->fs_type == NULL
+ || !strcmp(opt_state->fs_type, SVN_FS_TYPE_FSFS)))
+ {
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Repositories compatible with 1.0.x must "
+ "use --fs-type=bdb"));
+ }
+
+ if (! svn_version__at_least(opt_state->compatible_version, 1, 9, 0)
+ && opt_state->fs_type && !strcmp(opt_state->fs_type, SVN_FS_TYPE_FSX))
+ {
+ return svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Repositories compatible with 1.8.x or "
+ "earlier cannot use --fs-type=%s"),
+ SVN_FS_TYPE_FSX);
+ }
}
SVN_ERR(svn_repos_create(&repos, opt_state->repository_path,
Modified: subversion/branches/log-addressing/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/cmdline/svnadmin_tests.py?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/log-addressing/subversion/tests/cmdline/svnadmin_tests.py Wed Aug 7 00:02:30 2013
@@ -61,8 +61,7 @@ def check_hotcopy_bdb(src, dst):
if origerr or backerr or origout != backout:
raise svntest.Failure
-def check_hotcopy_fsfs(src, dst):
- "Verify that the SRC FSFS repository has been correctly copied to DST."
+def check_hotcopy_fsfs_fsx(src, dst):
# Walk the source and compare all files to the destination
for src_dirpath, src_dirs, src_files in os.walk(src):
# Verify that the current directory exists in the destination
@@ -146,6 +145,14 @@ def check_hotcopy_fsfs(src, dst):
f1.close()
f2.close()
+def check_hotcopy_fsfs(src, dst):
+ "Verify that the SRC FSFS repository has been correctly copied to DST."
+ check_hotcopy_fsfs_fsx(src, dst)
+
+def check_hotcopy_fsx(src, dst):
+ "Verify that the SRC FSX repository has been correctly copied to DST."
+ check_hotcopy_fsfs_fsx(src, dst)
+
#----------------------------------------------------------------------
# How we currently test 'svnadmin' --
@@ -457,8 +464,10 @@ def hotcopy_dot(sbox):
if svntest.main.is_fs_type_fsfs():
check_hotcopy_fsfs(sbox.repo_dir, backup_dir)
- else:
+ if svntest.main.is_fs_type_bdb():
check_hotcopy_bdb(sbox.repo_dir, backup_dir)
+ if svntest.main.is_fs_type_fsx():
+ check_hotcopy_fsx(sbox.repo_dir, backup_dir)
#----------------------------------------------------------------------
@@ -549,9 +558,17 @@ def verify_windows_paths_in_repos(sbox):
if errput:
raise SVNUnexpectedStderr(errput)
- # unfortunately, FSFS needs to do more checks than BDB resulting in
- # different progress output
- if svntest.main.is_fs_type_fsfs():
+ # unfortunately, some backends needs to do more checks than other
+ # resulting in different progress output
+ if svntest.main.is_fs_type_fsx():
+ svntest.verify.compare_and_display_lines(
+ "Error while running 'svnadmin verify'.",
+ 'STDERR', ["* Verifying metadata at revision 0 ...\n",
+ "* Verifying repository metadata ...\n",
+ "* Verified revision 0.\n",
+ "* Verified revision 1.\n",
+ "* Verified revision 2.\n"], output)
+ elif svntest.main.is_fs_type_fsfs():
svntest.verify.compare_and_display_lines(
"Error while running 'svnadmin verify'.",
'STDERR', ["* Verifying repository metadata ...\n",
Modified: subversion/branches/log-addressing/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/cmdline/svntest/main.py?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/log-addressing/subversion/tests/cmdline/svntest/main.py Wed Aug 7 00:02:30 2013
@@ -1330,6 +1330,9 @@ def is_fs_type_fsfs():
# This assumes that fsfs is the default fs implementation.
return options.fs_type == 'fsfs' or options.fs_type is None
+def is_fs_type_fsx():
+ return options.fs_type == 'fsx'
+
def is_fs_type_bdb():
return options.fs_type == 'bdb'
@@ -1753,7 +1756,7 @@ def _create_parser():
parser.add_option('--url', action='store',
help='Base url to the repos (e.g. svn://localhost)')
parser.add_option('--fs-type', action='store',
- help='Subversion file system type (fsfs or bdb)')
+ help='Subversion file system type (fsfs, bdb or fsx)')
parser.add_option('--cleanup', action='store_true',
help='Whether to clean up')
parser.add_option('--enable-sasl', action='store_true',
Modified: subversion/branches/log-addressing/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/libsvn_fs/fs-test.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/log-addressing/subversion/tests/libsvn_fs/fs-test.c Wed Aug 7 00:02:30 2013
@@ -5049,15 +5049,27 @@ test_fs_info_format(const svn_test_opts_
int fs_format;
svn_version_t *supports_version;
svn_version_t v1_5_0 = {1, 5, 0, ""};
+ svn_version_t v1_9_0 = {1, 9, 0, ""};
svn_test_opts_t opts2;
+ svn_boolean_t is_fsx = strcmp(opts->fs_type, "fsx") == 0;
opts2 = *opts;
- opts2.server_minor_version = 5;
+ opts2.server_minor_version = is_fsx ? 9 : 5;
SVN_ERR(svn_test__create_fs(&fs, "test-fs-format-info", &opts2, pool));
SVN_ERR(svn_fs_info_format(&fs_format, &supports_version, fs, pool, pool));
- SVN_TEST_ASSERT(fs_format == 3); /* happens to be the same for FSFS and BDB */
- SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_5_0));
+
+ if (is_fsx)
+ {
+ SVN_TEST_ASSERT(fs_format == 1);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_9_0));
+ }
+ else
+ {
+ /* happens to be the same for FSFS and BDB */
+ SVN_TEST_ASSERT(fs_format == 3);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_5_0));
+ }
return SVN_NO_ERROR;
}
Propchange: subversion/branches/log-addressing/subversion/tests/libsvn_fs_fs/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Aug 7 00:02:30 2013
@@ -10,3 +10,4 @@ test-get-set-revprop-packed-fs
.*~
*.exe
+fs-fs-pack-test
Copied: subversion/branches/log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (from r1511147, subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c)
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?p2=subversion/branches/log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c&p1=subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c&r1=1511147&r2=1511151&rev=1511151&view=diff
==============================================================================
--- subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original)
+++ subversion/branches/log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Wed Aug 7 00:02:30 2013
@@ -58,12 +58,14 @@ write_format(const char *path,
if (max_files_per_dir)
contents = apr_psprintf(pool,
"%d\n"
- "layout sharded %d\n",
+ "layout sharded %d\n"
+ "addressing logical 0\n",
format, max_files_per_dir);
else
contents = apr_psprintf(pool,
"%d\n"
- "layout linear",
+ "layout linear\n"
+ "addressing physical\n",
format);
}
else
Propchange: subversion/branches/log-addressing/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Aug 7 00:02:30 2013
@@ -0,0 +1,12 @@
+Debug
+Release
+.libs
+test-repo-*
+fs-x-pack-test
+string-table-test
+test-get-set-revprop-packed-fs
+*.o
+*.lo
+*~
+.*~
+*.exe
Propchange: subversion/branches/log-addressing/subversion/tests/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Aug 7 00:02:30 2013
@@ -0,0 +1,81 @@
+/subversion/branches/1.5.x-r30215/subversion/tests/libsvn_fs_x:870312
+/subversion/branches/1.7.x-fs-verify/subversion/tests/libsvn_fs_x:1146708,1161180
+/subversion/branches/10Gb/subversion/tests/libsvn_fs_x:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/subversion/tests/libsvn_fs_x:965046-1000689
+/subversion/branches/auto-props-sdc/subversion/tests/libsvn_fs_x:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/subversion/tests/libsvn_fs_x:872050-872529
+/subversion/branches/cache-server/subversion/tests/libsvn_fs_x:1458643-1476567
+/subversion/branches/diff-callbacks3/subversion/tests/libsvn_fs_x:870059-870761
+/subversion/branches/diff-optimizations/subversion/tests/libsvn_fs_x:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs_x:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/tests/libsvn_fs_x:870728-871118
+/subversion/branches/double-delete/subversion/tests/libsvn_fs_x:870511-872970
+/subversion/branches/ev2-export/subversion/tests/libsvn_fs_x:1325914,1332738,1413107
+/subversion/branches/explore-wc/subversion/tests/libsvn_fs_x:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/subversion/tests/libsvn_fs_x:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/tests/libsvn_fs_x:869036-873803
+/subversion/branches/fsfs-format7/subversion/tests/libsvn_fs_x:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507732,1507735-1507736
+/subversion/branches/fsfs-improvements/subversion/tests/libsvn_fs_x:1509279-1511149
+/subversion/branches/fsfs-pack/subversion/tests/libsvn_fs_x:873717-874575
+/subversion/branches/fsx/subversion/tests/libsvn_fs_x:1507845-1509914
+/subversion/branches/gnome-keyring/subversion/tests/libsvn_fs_x:870558-871410
+/subversion/branches/gpg-agent-password-store/subversion/tests/libsvn_fs_x:1005036-1150766
+/subversion/branches/gtest_addition/subversion/tests/libsvn_fs_x:1452117-1502138
+/subversion/branches/http-protocol-v2/subversion/tests/libsvn_fs_x:874395-876041
+/subversion/branches/in-memory-cache/subversion/tests/libsvn_fs_x:869829-871452
+/subversion/branches/in-repo-authz/subversion/tests/libsvn_fs_x:1414342-1424779
+/subversion/branches/inheritable-props/subversion/tests/libsvn_fs_x:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/subversion/tests/libsvn_fs_x:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/tests/libsvn_fs_x:998649-998852
+/subversion/branches/integrate-compression-level/subversion/tests/libsvn_fs_x:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/tests/libsvn_fs_x:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/tests/libsvn_fs_x:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/tests/libsvn_fs_x:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/tests/libsvn_fs_x:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/tests/libsvn_fs_x:1068695-1072516
+/subversion/branches/integrate-string-improvements/subversion/tests/libsvn_fs_x:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/subversion/tests/libsvn_fs_x:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/tests/libsvn_fs_x:965496-984198
+/subversion/branches/issue-2843-dev/subversion/tests/libsvn_fs_x:871432-874179
+/subversion/branches/issue-3000/subversion/tests/libsvn_fs_x:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/tests/libsvn_fs_x:873375-874084
+/subversion/branches/issue-3148-dev/subversion/tests/libsvn_fs_x:875193-875204
+/subversion/branches/issue-3220-dev/subversion/tests/libsvn_fs_x:872210-872226
+/subversion/branches/issue-3242-dev/subversion/tests/libsvn_fs_x:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/tests/libsvn_fs_x:875156-875867
+/subversion/branches/issue-3975/subversion/tests/libsvn_fs_x:1152931-1160746
+/subversion/branches/issue-4116-dev/subversion/tests/libsvn_fs_x:1424719-1425040
+/subversion/branches/issue-4194-dev/subversion/tests/libsvn_fs_x:1410507-1414880
+/subversion/branches/javahl-ra/subversion/tests/libsvn_fs_x:991978-1494640
+/subversion/branches/kwallet/subversion/tests/libsvn_fs_x:870785-871314
+/subversion/branches/log-g-performance/subversion/tests/libsvn_fs_x:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/tests/libsvn_fs_x:874525-874615
+/subversion/branches/multi-layer-moves/subversion/tests/libsvn_fs_x:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/subversion/tests/libsvn_fs_x:870276,870376
+/subversion/branches/node_pool/subversion/tests/libsvn_fs_x:1304828-1305388
+/subversion/branches/performance/subversion/tests/libsvn_fs_x:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-10293
36,1029339-1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/py-tests-as-modules/subversion/tests/libsvn_fs_x:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/tests/libsvn_fs_x:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/tests/libsvn_fs_x:873853-874164
+/subversion/branches/revprop-cache/subversion/tests/libsvn_fs_x:1298521-1326293
+/subversion/branches/revprop-packing/subversion/tests/libsvn_fs_x:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/subversion/tests/libsvn_fs_x:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/tests/libsvn_fs_x:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/tests/libsvn_fs_x:918519-934609
+/subversion/branches/svn_mutex/subversion/tests/libsvn_fs_x:1141683-1182099
+/subversion/branches/svnpatch-diff/subversion/tests/libsvn_fs_x:865738-876477
+/subversion/branches/svnraisetc/subversion/tests/libsvn_fs_x:874709-875149
+/subversion/branches/svnserve-logging/subversion/tests/libsvn_fs_x:869828-870893
+/subversion/branches/tc-issue-3334/subversion/tests/libsvn_fs_x:874697-874773
+/subversion/branches/tc-merge-notify/subversion/tests/libsvn_fs_x:874017-874062
+/subversion/branches/tc-resolve/subversion/tests/libsvn_fs_x:874191-874239
+/subversion/branches/tc_url_rev/subversion/tests/libsvn_fs_x:874351-874483
+/subversion/branches/tree-conflicts/subversion/tests/libsvn_fs_x:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/tests/libsvn_fs_x:873926-874008
+/subversion/branches/tristate-chunked-request/subversion/tests/libsvn_fs_x:1502394-1502681
+/subversion/branches/tweak-build-take-two/subversion/tests/libsvn_fs_x:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/subversion/tests/libsvn_fs_x:1060426-1064427
+/subversion/branches/verify-at-commit/subversion/tests/libsvn_fs_x:1462039-1462408
+/subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x:1439280-1492639
+/subversion/branches/wc-collate-path/subversion/tests/libsvn_fs_x:1402685-1480384
+/subversion/trunk/subversion/tests/libsvn_fs_x:1414756-1511145
Modified: subversion/branches/log-addressing/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/libsvn_repos/repos-test.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/log-addressing/subversion/tests/libsvn_repos/repos-test.c Wed Aug 7 00:02:30 2013
@@ -3271,21 +3271,26 @@ test_repos_info(const svn_test_opts_t *o
svn_version_t v1_0_0 = {1, 0, 0, ""};
svn_version_t v1_4_0 = {1, 4, 0, ""};
int repos_format;
+ svn_boolean_t is_fsx = strcmp(opts->fs_type, "fsx") == 0;
opts2 = *opts;
- opts2.server_minor_version = 3;
- SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-3",
- &opts2, pool));
- SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
- SVN_TEST_ASSERT(apr_hash_count(capabilities) == 0);
- SVN_ERR(svn_repos_info_format(&repos_format, &supports_version, repos,
- pool, pool));
- SVN_TEST_ASSERT(repos_format == 3);
- SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_0_0));
+ /* for repo types that have been around before 1.4 */
+ if (!is_fsx)
+ {
+ opts2.server_minor_version = 3;
+ SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-3",
+ &opts2, pool));
+ SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
+ SVN_TEST_ASSERT(apr_hash_count(capabilities) == 0);
+ SVN_ERR(svn_repos_info_format(&repos_format, &supports_version, repos,
+ pool, pool));
+ SVN_TEST_ASSERT(repos_format == 3);
+ SVN_TEST_ASSERT(svn_ver_equal(supports_version, &v1_0_0));
+ }
- opts2.server_minor_version = 8;
- SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-8",
+ opts2.server_minor_version = 9;
+ SVN_ERR(svn_test__create_repos(&repos, "test-repo-info-9",
&opts2, pool));
SVN_ERR(svn_repos_capabilities(&capabilities, repos, pool, pool));
SVN_TEST_ASSERT(apr_hash_count(capabilities) == 1);
Propchange: subversion/branches/log-addressing/subversion/tests/libsvn_subr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Aug 7 00:02:30 2013
@@ -42,3 +42,6 @@ named_atomic-proc-test
io-test
io-test-temp
auth-clear
+prefix-string-test
+priority-queue-test
+packed-data-test
Modified: subversion/branches/log-addressing/subversion/tests/libsvn_subr/spillbuf-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/libsvn_subr/spillbuf-test.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/libsvn_subr/spillbuf-test.c (original)
+++ subversion/branches/log-addressing/subversion/tests/libsvn_subr/spillbuf-test.c Wed Aug 7 00:02:30 2013
@@ -305,8 +305,11 @@ test_spillbuf_interleaving_spill_all(apr
}
static svn_error_t *
-test_spillbuf__reader(apr_pool_t *pool, svn_spillbuf_reader_t *sbr)
+test_spillbuf_reader(apr_pool_t *pool)
{
+ svn_spillbuf_reader_t *sbr = svn_spillbuf__reader_create(4 /* blocksize */,
+ 100 /* maxsize */,
+ pool);
apr_size_t amt;
char buf[10];
@@ -331,29 +334,12 @@ test_spillbuf__reader(apr_pool_t *pool,
}
static svn_error_t *
-test_spillbuf_reader(apr_pool_t *pool)
-{
- svn_spillbuf_reader_t *sbr = svn_spillbuf__reader_create(4 /* blocksize */,
- 100 /* maxsize */,
- pool);
- return test_spillbuf__reader(pool, sbr);
-}
-
-static svn_error_t *
-test_spillbuf_reader_spill_all(apr_pool_t *pool)
-{
- svn_spillbuf_reader_t *sbr = svn_spillbuf__reader_create_extended(
- 4 /* blocksize */,
- 100 /* maxsize */,
- TRUE /* delte on close */,
- TRUE /* spill all data */,
- NULL, pool);
- return test_spillbuf__reader(pool, sbr);
-}
-
-static svn_error_t *
-test_spillbuf__stream(apr_pool_t *pool, svn_stream_t *stream)
+test_spillbuf_stream(apr_pool_t *pool)
{
+ svn_spillbuf_t *buf = svn_spillbuf__create(4 /* blocksize */,
+ 100 /* maxsize */,
+ pool);
+ svn_stream_t *stream = svn_stream__from_spillbuf(buf, pool);
char readbuf[256];
apr_size_t readlen;
apr_size_t writelen;
@@ -397,27 +383,6 @@ test_spillbuf__stream(apr_pool_t *pool,
}
static svn_error_t *
-test_spillbuf_stream(apr_pool_t *pool)
-{
- svn_stream_t *stream = svn_stream__from_spillbuf(8 /* blocksize */,
- 15 /* maxsize */,
- pool);
- return test_spillbuf__stream(pool, stream);
-}
-
-static svn_error_t *
-test_spillbuf_stream_spill_all(apr_pool_t *pool)
-{
- svn_stream_t *stream = svn_stream__from_spillbuf_extended(
- 8 /* blocksize */,
- 15 /* maxsize */,
- TRUE /* delte on close */,
- TRUE /* spill all data */,
- NULL, pool);
- return test_spillbuf__stream(pool, stream);
-}
-
-static svn_error_t *
test_spillbuf__rwfile(apr_pool_t *pool, svn_spillbuf_t *buf)
{
SVN_ERR(svn_spillbuf__write(buf, "abcdef", 6, pool));
@@ -612,11 +577,7 @@ struct svn_test_descriptor_t test_funcs[
SVN_TEST_PASS2(test_spillbuf_interleaving_spill_all,
"interleaving reads and writes (spill-all-data)"),
SVN_TEST_PASS2(test_spillbuf_reader, "spill buffer reader test"),
- SVN_TEST_PASS2(test_spillbuf_reader_spill_all,
- "spill buffer reader test (spill-all-data)"),
SVN_TEST_PASS2(test_spillbuf_stream, "spill buffer stream test"),
- SVN_TEST_PASS2(test_spillbuf_stream_spill_all,
- "spill buffer stream test (spill-all-data)"),
SVN_TEST_PASS2(test_spillbuf_rwfile, "read/write spill file"),
SVN_TEST_PASS2(test_spillbuf_rwfile_spill_all,
"read/write spill file (spill-all-data)"),
Modified: subversion/branches/log-addressing/subversion/tests/svn_test_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/subversion/tests/svn_test_fs.c?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/subversion/tests/svn_test_fs.c (original)
+++ subversion/branches/log-addressing/subversion/tests/svn_test_fs.c Wed Aug 7 00:02:30 2013
@@ -145,21 +145,36 @@ create_fs(svn_fs_t **fs_p,
* copy that file into the filesystem FS and set *MUST_REOPEN to TRUE, else
* set *MUST_REOPEN to FALSE. */
static svn_error_t *
-maybe_install_fsfs_conf(svn_fs_t *fs,
- const svn_test_opts_t *opts,
- svn_boolean_t *must_reopen,
- apr_pool_t *pool)
+maybe_install_fs_conf(svn_fs_t *fs,
+ const svn_test_opts_t *opts,
+ svn_boolean_t *must_reopen,
+ apr_pool_t *pool)
{
*must_reopen = FALSE;
- if (strcmp(opts->fs_type, "fsfs") != 0 || ! opts->config_file)
+ if (! opts->config_file)
return SVN_NO_ERROR;
- *must_reopen = TRUE;
- return svn_io_copy_file(opts->config_file,
- svn_path_join(svn_fs_path(fs, pool),
- "fsfs.conf", pool),
- FALSE /* copy_perms */,
- pool);
+ if (strcmp(opts->fs_type, "fsfs") == 0)
+ {
+ *must_reopen = TRUE;
+ return svn_io_copy_file(opts->config_file,
+ svn_path_join(svn_fs_path(fs, pool),
+ "fsfs.conf", pool),
+ FALSE /* copy_perms */,
+ pool);
+ }
+
+ if (strcmp(opts->fs_type, "fsx") == 0)
+ {
+ *must_reopen = TRUE;
+ return svn_io_copy_file(opts->config_file,
+ svn_path_join(svn_fs_path(fs, pool),
+ "fsx.conf", pool),
+ FALSE /* copy_perms */,
+ pool);
+ }
+
+ return SVN_NO_ERROR;
}
@@ -184,7 +199,7 @@ svn_test__create_fs(svn_fs_t **fs_p,
SVN_ERR(create_fs(fs_p, name, opts->fs_type,
opts->server_minor_version, pool));
- SVN_ERR(maybe_install_fsfs_conf(*fs_p, opts, &must_reopen, pool));
+ SVN_ERR(maybe_install_fs_conf(*fs_p, opts, &must_reopen, pool));
if (must_reopen)
{
SVN_ERR(svn_fs_open(fs_p, name, NULL, pool));
@@ -230,8 +245,8 @@ svn_test__create_repos(svn_repos_t **rep
/* Register this repo for cleanup. */
svn_test_add_dir_cleanup(name);
- SVN_ERR(maybe_install_fsfs_conf(svn_repos_fs(repos), opts, &must_reopen,
- pool));
+ SVN_ERR(maybe_install_fs_conf(svn_repos_fs(repos), opts, &must_reopen,
+ pool));
if (must_reopen)
{
SVN_ERR(svn_repos_open2(&repos, name, NULL, pool));
Modified: subversion/branches/log-addressing/tools/dist/backport.pl
URL: http://svn.apache.org/viewvc/subversion/branches/log-addressing/tools/dist/backport.pl?rev=1511151&r1=1511150&r2=1511151&view=diff
==============================================================================
--- subversion/branches/log-addressing/tools/dist/backport.pl (original)
+++ subversion/branches/log-addressing/tools/dist/backport.pl Wed Aug 7 00:02:30 2013
@@ -25,7 +25,7 @@ use Term::ReadKey qw/ReadMode ReadKey/;
use File::Basename qw/basename/;
use File::Copy qw/copy move/;
use File::Temp qw/tempfile/;
-use POSIX qw/ctermid/;
+use POSIX qw/ctermid strftime/;
############### Start of reading values from environment ###############
@@ -165,7 +165,9 @@ sub merge {
my ($logmsg_fh, $logmsg_filename) = tempfile();
my ($mergeargs, $pattern);
- my $backupfile = "backport_pl.$$.tmp";
+ # Include the time so it's easier to find the interesting backups.
+ my $backupfile = strftime "backport_pl.%Y%m%d-%H%M%S.$$.tmp", localtime;
+ die if -s $backupfile;
if ($entry{branch}) {
my $vim_escaped_branch =
@@ -177,22 +179,24 @@ sub merge {
$vim_escaped_branch;
if ($SVNvsn >= 1_008_000) {
$mergeargs = "$BRANCHES/$entry{branch}";
- say $logmsg_fh "Merge the $entry{header}:";
+ say $logmsg_fh "Merge $entry{header}:";
} else {
$mergeargs = "--reintegrate $BRANCHES/$entry{branch}";
- say $logmsg_fh "Reintegrate the $entry{header}:";
+ say $logmsg_fh "Reintegrate $entry{header}:";
}
say $logmsg_fh "";
} elsif (@{$entry{revisions}}) {
$pattern = '^ [*] \V' . 'r' . $entry{revisions}->[0];
- $mergeargs = join " ", (map { "-c$_" } @{$entry{revisions}}), '^/subversion/trunk';
- if (@{$entry{revisions}} > 1) {
- say $logmsg_fh "Merge the $entry{header} from trunk:";
- say $logmsg_fh "";
- } else {
- say $logmsg_fh "Merge r$entry{revisions}->[0] from trunk:";
- say $logmsg_fh "";
- }
+ $mergeargs = join " ",
+ ($entry{accept} ? "--accept=$entry{accept}" : ()),
+ (map { "-c$_" } @{$entry{revisions}}),
+ '--',
+ '^/subversion/trunk';
+ say $logmsg_fh
+ "Merge $entry{header} from trunk",
+ $entry{accept} ? ", with --accept=$entry{accept}" : "",
+ ":";
+ say $logmsg_fh "";
} else {
die "Don't know how to call $entry{header}";
}
@@ -284,6 +288,7 @@ sub parse_entry {
my $raw = shift;
my @lines = @_;
my $depends;
+ my $accept;
my (@revisions, @logsummary, $branch, @votes);
# @lines = @_;
@@ -312,33 +317,62 @@ sub parse_entry {
unshift @votes, pop until $_[-1] =~ /^\s*Votes:/ or not defined $_[-1];
pop;
- # depends
- # TODO: parse the value of this.
- $depends = grep /^Depends:/, @_;
-
- # branch
+ # depends, branch, notes
while (@_) {
- shift and next unless $_[0] =~ s/^\s*Branch:\s*//;
- $branch = sanitize_branch (shift || shift || die "Branch header found without value");
+ given (shift) {
+ when (/^Depends:/) {
+ $depends++;
+ }
+ if (s/^Branch:\s*//) {
+ $branch = sanitize_branch ($_ || shift || die "Branch header found without value");
+ }
+ if (s/^Notes:\s*//) {
+ my $notes = $_;
+ $notes .= shift while @_ and $_[0] !~ /^\w/;
+ my %accepts = map { $_ => 1 } ($notes =~ /--accept[ =]([a-z-]+)/g);
+ given (scalar keys %accepts) {
+ when (0) { }
+ when (1) { $accept = [keys %accepts]->[0]; }
+ default {
+ warn "Too many --accept values at '",
+ logsummarysummary({ logsummary => [@logsummary] }),
+ "'";
+ }
+ }
+ }
+ }
}
# Compute a header.
my ($header, $id);
- $header = "r$revisions[0] group" if @revisions;
- $id = "r$revisions[0]" if @revisions;
- $header = "$branch branch" if $branch;
- $id = $branch if $branch;
- warn "No header for [@lines]" unless $header;
+ if ($branch) {
+ $header = "the $branch branch";
+ $id = $branch;
+ } elsif (@revisions == 1) {
+ $header = "r$revisions[0]";
+ $id = "r$revisions[0]";
+ } elsif (@revisions) {
+ $header = "the r$revisions[0] group";
+ $id = "r$revisions[0]";
+ } else {
+ die "Entry '$raw' has neither revisions nor branch";
+ }
+ my $header_start = ($header =~ /^the/ ? ucfirst($header) : $header);
+
+ warn "Entry has both branch '$branch' and --accept=$accept specified\n"
+ if $branch and $accept;
return (
revisions => [@revisions],
logsummary => [@logsummary],
branch => $branch,
header => $header,
+ header_start => $header_start,
depends => $depends,
id => $id,
votes => [@votes],
entry => [@lines],
+ accept => $accept,
raw => $raw,
digest => digest_string($raw),
);
@@ -449,12 +483,12 @@ sub vote {
? (
( $_->{vote} eq 'edit'
? "Edit$words_edit the $_->{entry}->{id} entry"
- : "Vote $_->{vote} on the $_->{entry}->{header}$words_vote"
+ : "Vote $_->{vote} on $_->{entry}->{header}$words_vote"
)
. "."
)
: # exists only in $approved
- "Approve the $_->{entry}->{header}."
+ "Approve $_->{entry}->{header}."
} @votesarray;
(@sentences == 1)
? $sentences[0]
@@ -512,9 +546,9 @@ sub warning_summary {
warn "Warning summary\n";
warn "===============\n";
warn "\n";
- for my $header (keys %ERRORS) {
- my $title = logsummarysummary $ERRORS{$header}->[0];
- warn "$header ($title): $ERRORS{$header}->[1]\n";
+ for my $id (keys %ERRORS) {
+ my $title = logsummarysummary $ERRORS{$id}->[0];
+ warn "$id ($title): $ERRORS{$id}->[1]\n";
}
}
@@ -580,33 +614,34 @@ sub handle_entry {
@conflicts),
']' x !!$#conflicts,
];
- say STDERR "Conflicts merging the $entry{header}!";
+ say STDERR "Conflicts merging $entry{header}!";
say STDERR "";
say STDERR $output;
system "$SVN diff -- @conflicts";
} elsif (!@conflicts and $entry{depends}) {
# Not a warning since svn-role may commit the dependency without
# also committing the dependent in the same pass.
- print "No conflicts merging $entry{id}, but conflicts were "
+ print "No conflicts merging $entry{header}, but conflicts were "
."expected ('Depends:' header set)\n";
} elsif (@conflicts) {
- say "Conflicts found merging $entry{id}, as expected.";
+ say "Conflicts found merging $entry{header}, as expected.";
}
revert;
}
}
} elsif ($state->{$entry{digest}}) {
print "\n\n";
- say "Skipping the $entry{header} (remove $STATEFILE to reset):";
+ say "Skipping $entry{header} (remove $STATEFILE to reset):";
say logsummarysummary \%entry;
} else {
# This loop is just a hack because 'goto' panics. The goto should be where
# the "next PROMPT;" is; there's a "last;" at the end of the loop body.
PROMPT: while (1) {
say "";
- say "\n>>> The $entry{header}:";
+ say "\n>>> $entry{header_start}:";
say join ", ", map { "r$_" } @{$entry{revisions}} if @{$entry{revisions}};
say "$BRANCHES/$entry{branch}" if $entry{branch};
+ say "--accept=$entry{accept}" if $entry{accept};
say "";
say for @{$entry{logsummary}};
say "";
@@ -632,6 +667,12 @@ sub handle_entry {
or warn "diff failed ($?): $!";
next;
}
+ when (/^N/i) {
+ # fall through.
+ }
+ default {
+ next;
+ }
}
revert;
next PROMPT;