subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stef...@apache.org
Subject 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...
Date Wed, 07 Aug 2013 00:02:32 GMT
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;



Mime
View raw message