Author: stefan2
Date: Tue Apr 30 10:38:14 2013
New Revision: 1477542

URL: http://svn.apache.org/r1477542
Log:
On the fsfs-format7 branch:
catch up merge with /trunk up to and including r1477541
with no conflicts

Modified:
    subversion/branches/fsfs-format7/   (props changed)
    subversion/branches/fsfs-format7/build/generator/gen_base.py
    
subversion/branches/fsfs-format7/build/generator/templates/build-outputs.mk.ezt
    subversion/branches/fsfs-format7/subversion/libsvn_delta/compose_delta.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c
    subversion/branches/fsfs-format7/subversion/libsvn_subr/config.c
    subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c
    subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c
    subversion/branches/fsfs-format7/subversion/po/de.po
    subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c
    subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/random-test.c
    
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h

Propchange: subversion/branches/fsfs-format7/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1476665-1477541
  Merged /subversion/branches/cache-server:r1458643

Modified: subversion/branches/fsfs-format7/build/generator/gen_base.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/gen_base.py?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/build/generator/gen_base.py (original)
+++ subversion/branches/fsfs-format7/build/generator/gen_base.py Tue Apr 30 
10:38:14 2013
@@ -241,6 +241,13 @@ class GeneratorBase:
 
   @staticmethod
   def write_errno_table():
+    # ### We generate errorcode.inc at autogen.sh time (here!).
+    # ###
+    # ### Currently it's only used by maintainer-mode builds.  If this
+    # ### functionality ever moves to release builds, it will have to move
+    # ### to configure-time.  (But then you have to solve two problems:
+    # ### what to do on windows, and what to do on unix when Python is not
+    # ### available at configure-time.)
     import errno
     fd = open('subversion/libsvn_subr/errorcode.inc', 'w')
     fd.write('/* This file was generated by build/generator/gen_base.py 
*/\n\n')

Modified: 
subversion/branches/fsfs-format7/build/generator/templates/build-outputs.mk.ezt
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/build/generator/templates/build-outputs.mk.ezt?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- 
subversion/branches/fsfs-format7/build/generator/templates/build-outputs.mk.ezt 
(original)
+++ 
subversion/branches/fsfs-format7/build/generator/templates/build-outputs.mk.ezt 
Tue Apr 30 10:38:14 2013
@@ -45,6 +45,7 @@ MANPAGES =[for manpages] [manpages][end]
 
 CLEAN_FILES =[for cfiles] [cfiles][end]
 EXTRACLEAN_FILES =[for sql] [sql.header][end] \
+  $(abs_builddir)/subversion/libsvn_subr/errorcode.inc \
   $(abs_srcdir)/compile_commands.json
 
 SWIG_INCLUDES = -I$(abs_builddir)/subversion \

Modified: 
subversion/branches/fsfs-format7/subversion/libsvn_delta/compose_delta.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_delta/compose_delta.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_delta/compose_delta.c 
(original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_delta/compose_delta.c 
Tue Apr 30 10:38:14 2013
@@ -648,15 +648,17 @@ copy_source_ops(apr_size_t offset, apr_s
     {
       const svn_txdelta_op_t *const op = &window->ops[op_ndx];
       const apr_size_t *const off = &ndx->offs[op_ndx];
-      apr_size_t fix_offset;
-      apr_size_t fix_limit;
+      const apr_size_t fix_offset = (offset > off[0] ? offset - off[0] : 0);
+      const apr_size_t fix_limit = (off[1] > limit ? off[1] - limit : 0);
 
+      /* Ideally, we'd do this check before assigning fix_offset and
+         fix_limit; but then we couldn't make them const whilst still
+         adhering to C90 rules. Instead, we're going to assume that a
+         smart optimizing compiler will reorder this check before the
+         local variable initialization. */
       if (off[0] >= limit)
           break;
 
-      fix_offset = (offset > off[0] ? offset - off[0] : 0);
-      fix_limit = (off[1] > limit ? off[1] - limit : 0);
-
       /* It would be extremely weird if the fixed-up op had zero length. */
       assert(fix_offset + fix_limit < op->length);
 
@@ -701,23 +703,22 @@ copy_source_ops(apr_size_t offset, apr_s
               apr_size_t tgt_off = target_offset;
               assert(ptn_length > ptn_overlap);
 
-              /* ### FIXME: ptn_overlap is unsigned, so the if() condition
-                 below is always true!  Either it should be '> 0', or the
-                 code block should be unconditional.  See also r842362. */
-              if (ptn_overlap >= 0)
-                {
-                  /* Issue second subrange in the pattern. */
-                  const apr_size_t length =
-                    MIN(op->length - fix_off - fix_limit,
-                        ptn_length - ptn_overlap);
-                  copy_source_ops(op->offset + ptn_overlap,
-                                  op->offset + ptn_overlap + length,
-                                  tgt_off,
-                                  op_ndx,
-                                  build_baton, window, ndx, pool);
-                  fix_off += length;
-                  tgt_off += length;
-                }
+              /* Unconditionally issue the second subrange of the
+                 pattern. This is always correct, since the outer
+                 condition already verifies that there is an overlap
+                 in the target copy. */
+              {
+                const apr_size_t length =
+                  MIN(op->length - fix_off - fix_limit,
+                      ptn_length - ptn_overlap);
+                copy_source_ops(op->offset + ptn_overlap,
+                                op->offset + ptn_overlap + length,
+                                tgt_off,
+                                op_ndx,
+                                build_baton, window, ndx, pool);
+                fix_off += length;
+                tgt_off += length;
+              }
 
               assert(fix_off + fix_limit <= op->length);
               if (ptn_overlap > 0

Modified: 
subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c 
(original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/cache-membuffer.c 
Tue Apr 30 10:38:14 2013
@@ -98,7 +98,7 @@
  * comments in ensure_data_insertable_l2().
  *
  * To limit the entry size and management overhead, not the actual item keys
- * but only their MD5 checksums will not be stored. This is reasonably safe
+ * but only their MD5-based hashes will be stored. This is reasonably safe
  * to do since users have only limited control over the full keys, even if
  * these contain folder paths. So, it is very hard to deliberately construct
  * colliding keys. Random checksum collisions can be shown to be extremely
@@ -888,9 +888,12 @@ get_group_index(svn_membuffer_t **cache,
 {
   svn_membuffer_t *segment0 = *cache;
 
-  /* select the cache segment to use. they have all the same group_count */
-  *cache = &segment0[key[0] & (segment0->segment_count -1)];
-  return key[1] % segment0->group_count;
+  /* select the cache segment to use. they have all the same group_count.
+   * Since key may not be well-distributed, pre-fold it to a smaller but
+   * "denser" ranger.  The divisors are primes larger than the largest
+   * counts. */
+  *cache = &segment0[(key[1] % 2809637ull) & (segment0->segment_count - 1)];
+  return (key[0] % 5030895599ull) % segment0->group_count;
 }
 
 /* Reduce the hit count of ENTRY and update the accumulated hit info
@@ -1011,6 +1014,8 @@ find_entry(svn_membuffer_t *cache,
        */
       if (group->used == GROUP_SIZE)
         {
+          static int count = 0;
+          
           /* every entry gets the same chance of being removed.
            * Otherwise, we free the first entry, fill it and remove it
            * again on the next occasion without considering the other
@@ -1032,6 +1037,7 @@ find_entry(svn_membuffer_t *cache,
               let_entry_age(cache, entry);
 
           drop_entry(cache, entry);
+          printf("%d\n", ++count);
         }
 
       /* initialize entry for the new key
@@ -2135,6 +2141,22 @@ membuffer_cache_set_partial(svn_membuffe
  * svn_cache__t instance.
  */
 
+/* Stores the combined key value for the given key.  It will be used by
+ * combine_key() to short-circuit expensive hash calculations.
+ */
+typedef struct last_access_key_t
+{
+  /* result of key combining */
+  entry_key_t combined_key;
+
+  /* length of the key (or APR_HASH_KEY_STRING if not used) */
+  apr_size_t key_len;
+
+  /* the original key.  Only KEY_LEN bytes are valid.  We use uint32 for
+   * better compatibility with pseudo-md5 functions. */
+  apr_uint32_t key[64];
+} last_access_key_t;
+
 /* Internal cache structure (used in svn_cache__t.cache_internal) basically
  * holding the additional parameters needed to call the respective membuffer
  * functions.
@@ -2185,6 +2207,11 @@ typedef struct svn_membuffer_cache_t
    */
   int alloc_counter;
 
+  /* cache for the last key used.
+   * Will be NULL for caches with short fix-sized keys.
+   */
+  last_access_key_t *last_access;
+  
   /* if enabled, this will serialize the access to this instance.
    */
   svn_mutex__t *mutex;
@@ -2202,46 +2229,127 @@ typedef struct svn_membuffer_cache_t
  */
 #define ALLOCATIONS_PER_POOL_CLEAR 10
 
-
 /* Basically calculate a hash value for KEY of length KEY_LEN, combine it
  * with the CACHE->PREFIX and write the result in CACHE->COMBINED_KEY.
+ * This could replace combine_key() entirely but we actually use it only
+ * when the quick path failed.
  */
 static void
-combine_key(svn_membuffer_cache_t *cache,
-            const void *key,
-            apr_ssize_t key_len)
+combine_long_key(svn_membuffer_cache_t *cache,
+                 const void *key,
+                 apr_ssize_t key_len)
 {
+  assert(cache->last_access);
+
+  /* handle variable-length keys */
   if (key_len == APR_HASH_KEY_STRING)
     key_len = strlen((const char *) key);
 
-  if (key_len < 16)
+  /* same key as the last time? -> short-circuit */
+  if (   key_len == cache->last_access->key_len
+      && memcmp(key, cache->last_access->key, key_len) == 0)
     {
-      apr_uint32_t data[4] = { 0 };
-      memcpy(data, key, key_len);
+      memcpy(cache->combined_key, cache->last_access->combined_key,
+             sizeof(cache->combined_key));
+    }
+  else if (key_len >= 64)
+    {
+      /* relatively long key.  Use the generic, slow hash code for it */
+      apr_md5((unsigned char*)cache->combined_key, key, key_len);
+      cache->combined_key[0] ^= cache->prefix[0];
+      cache->combined_key[1] ^= cache->prefix[1];
 
-      svn__pseudo_md5_15((apr_uint32_t *)cache->combined_key, data);
+      /* is the key short enough to cache the result? */
+      if (key_len <= sizeof(cache->last_access->key))
+        {
+          memcpy(cache->last_access->combined_key, cache->combined_key,
+                 sizeof(cache->combined_key));
+          cache->last_access->key_len = key_len;
+          memcpy(cache->last_access->key, key, key_len);
+        }
     }
-  else if (key_len < 32)
+  else
     {
-      apr_uint32_t data[8] = { 0 };
-      memcpy(data, key, key_len);
+      /* shorter keys use efficient hash code and *do* cache the results */
+      cache->last_access->key_len = key_len;
+      if (key_len < 16)
+        {
+          memset(cache->last_access->key, 0, 16);
+          memcpy(cache->last_access->key, key, key_len);
+
+          svn__pseudo_md5_15((apr_uint32_t *)cache->combined_key,
+                             cache->last_access->key);
+        }
+      else if (key_len < 32)
+        {
+          memset(cache->last_access->key, 0, 32);
+          memcpy(cache->last_access->key, key, key_len);
+
+          svn__pseudo_md5_31((apr_uint32_t *)cache->combined_key,
+                             cache->last_access->key);
+        }
+      else
+        {
+          memset(cache->last_access->key, 0, 64);
+          memcpy(cache->last_access->key, key, key_len);
+
+          svn__pseudo_md5_63((apr_uint32_t *)cache->combined_key,
+                             cache->last_access->key);
+        }
+
+      cache->combined_key[0] ^= cache->prefix[0];
+      cache->combined_key[1] ^= cache->prefix[1];
+
+      memcpy(cache->last_access->combined_key, cache->combined_key,
+             sizeof(cache->combined_key));
+    }
+}
+
+/* Basically calculate a hash value for KEY of length KEY_LEN, combine it
+ * with the CACHE->PREFIX and write the result in CACHE->COMBINED_KEY.
+ */
+static void
+combine_key(svn_membuffer_cache_t *cache,
+            const void *key,
+            apr_ssize_t key_len)
+{
+  /* copy of *key, padded with 0 */
+  apr_uint64_t data[2];
 
-      svn__pseudo_md5_31((apr_uint32_t *)cache->combined_key, data);
+  /* short, fixed-size keys are the most common case */
+  if (key_len == 16)
+    {
+      data[0] = ((const apr_uint64_t *)key)[0];
+      data[1] = ((const apr_uint64_t *)key)[1];
     }
-  else if (key_len < 64)
+  else if (key_len == 8)
     {
-      apr_uint32_t data[16] = { 0 };
+      data[0] = ((const apr_uint64_t *)key)[0];
+      data[1] = 0;
+    }
+  else if (key_len != APR_HASH_KEY_STRING && key_len < 16)
+    {
+      data[0] = 0;
+      data[1] = 0;
       memcpy(data, key, key_len);
-
-      svn__pseudo_md5_63((apr_uint32_t *)cache->combined_key, data);
     }
   else
     {
-      apr_md5((unsigned char*)cache->combined_key, key, key_len);
+      /* longer or variably sized keys */
+      combine_long_key(cache, key, key_len);
+      return;
     }
 
-  cache->combined_key[0] ^= cache->prefix[0];
-  cache->combined_key[1] ^= cache->prefix[1];
+  /* scramble key DATA.  All of this must be reversible to prevent key
+   * collisions.  So, we limit ourselves to xor and permutations. */
+  data[1] = (data[1] << 27) | (data[1] >> 37);
+  data[1] ^= data[0] & 0xffff;
+  data[0] ^= data[1] & 0xffffffffffff0000ull;
+  data[0] = (data[0] << 43) | (data[0] >> 21);
+
+  /* combine with this cache's namespace */
+  cache->combined_key[0] = data[0] ^ cache->prefix[0];
+  cache->combined_key[1] = data[1] ^ cache->prefix[1];
 }
 
 /* Implement svn_cache__vtable_t.get (not thread-safe)
@@ -2712,6 +2820,18 @@ svn_cache__create_membuffer_cache(svn_ca
                        pool));
   memcpy(cache->prefix, checksum->digest, sizeof(cache->prefix));
 
+  /* fix-length keys of 16 bytes or under don't need a buffer because we
+   * can use a very fast key combining algorithm. */
+  if ((klen == APR_HASH_KEY_STRING) ||  klen > sizeof(entry_key_t))
+    {
+      cache->last_access = apr_pcalloc(pool, sizeof(*cache->last_access));
+      cache->last_access->key_len = APR_HASH_KEY_STRING;
+    }
+  else
+    {
+      cache->last_access = NULL;
+    }
+
 #ifdef SVN_DEBUG_CACHE_MEMBUFFER
 
   /* Initialize cache debugging support.

Modified: subversion/branches/fsfs-format7/subversion/libsvn_subr/config.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_subr/config.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_subr/config.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_subr/config.c Tue Apr 30 
10:38:14 2013
@@ -188,7 +188,8 @@ read_all(svn_config_t **cfgp,
 #ifdef WIN32
   if (sys_registry_path)
     {
-      SVN_ERR(svn_config_read2(cfgp, sys_registry_path, FALSE, FALSE, pool));
+      SVN_ERR(svn_config_read3(cfgp, sys_registry_path, FALSE, FALSE, FALSE,
+                               pool));
       red_config = TRUE;
     }
 #endif /* WIN32 */
@@ -214,8 +215,8 @@ read_all(svn_config_t **cfgp,
         SVN_ERR(svn_config_merge(*cfgp, usr_registry_path, FALSE));
       else
         {
-          SVN_ERR(svn_config_read2(cfgp, usr_registry_path,
-                                   FALSE, FALSE, pool));
+          SVN_ERR(svn_config_read3(cfgp, usr_registry_path,
+                                   FALSE, FALSE, FALSE, pool));
           red_config = TRUE;
         }
     }

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/conflicts.c Tue Apr 
30 10:38:14 2013
@@ -2302,6 +2302,46 @@ svn_wc__read_conflicts(const apr_array_h
 
 /*** Resolving a conflict automatically ***/
 
+/* Prepare to delete an artifact file at ARTIFACT_FILE_ABSPATH in the
+ * working copy at DB/WRI_ABSPATH.
+ *
+ * Set *WORK_ITEMS to a new work item that, when run, will delete the
+ * artifact file; or to NULL if there is no file to delete.
+ *
+ * Set *FILE_FOUND to TRUE if the artifact file is found on disk and its
+ * node kind is 'file'; otherwise do not change *FILE_FOUND.  FILE_FOUND
+ * may be NULL if not required.
+ */
+static svn_error_t *
+remove_artifact_file_if_exists(svn_skel_t **work_items,
+                               svn_boolean_t *file_found,
+                               svn_wc__db_t *db,
+                               const char *wri_abspath,
+                               const char *artifact_file_abspath,
+                               apr_pool_t *result_pool,
+                               apr_pool_t *scratch_pool)
+{
+  *work_items = NULL;
+  if (artifact_file_abspath)
+    {
+      svn_node_kind_t node_kind;
+
+      SVN_ERR(svn_io_check_path(artifact_file_abspath, &node_kind,
+                                scratch_pool));
+      if (node_kind == svn_node_file)
+        {
+          SVN_ERR(svn_wc__wq_build_file_remove(work_items,
+                                               db, wri_abspath,
+                                               artifact_file_abspath,
+                                               result_pool, scratch_pool));
+          if (file_found)
+            *file_found = TRUE;
+        }
+    }
+
+  return SVN_NO_ERROR;
+}
+
 /*
  * Resolve the text conflict found in DB/LOCAL_ABSPATH/CONFLICTS
  * according to CONFLICT_CHOICE.  (Don't mark it as resolved.)
@@ -2332,7 +2372,6 @@ resolve_text_conflict_on_node(svn_boolea
   const char *conflict_new = NULL;
   const char *conflict_working = NULL;
   const char *auto_resolve_src;
-  svn_node_kind_t node_kind;
   svn_skel_t *work_item;
 
   SVN_ERR(svn_wc__conflict_read_text_conflict(&conflict_working,
@@ -2425,47 +2464,20 @@ resolve_text_conflict_on_node(svn_boolea
      If not the UI shows the conflict as already resolved
      (and in this case we just remove the in-db conflict) */
 
-  if (conflict_old)
-    {
-      SVN_ERR(svn_io_check_path(conflict_old, &node_kind, scratch_pool));
-      if (node_kind == svn_node_file)
-        {
-          SVN_ERR(svn_wc__wq_build_file_remove(&work_item, db,
-                                               local_abspath,
-                                               conflict_old,
-                                               scratch_pool, scratch_pool));
-          *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
-          *removed_reject_files = TRUE;
-        }
-    }
-
-  if (conflict_new)
-    {
-      SVN_ERR(svn_io_check_path(conflict_new, &node_kind, scratch_pool));
-      if (node_kind == svn_node_file)
-        {
-          SVN_ERR(svn_wc__wq_build_file_remove(&work_item, db,
-                                               local_abspath,
-                                               conflict_new,
-                                               scratch_pool, scratch_pool));
-          *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
-          *removed_reject_files = TRUE;
-        }
-    }
-
-  if (conflict_working)
-    {
-      SVN_ERR(svn_io_check_path(conflict_working, &node_kind, scratch_pool));
-      if (node_kind == svn_node_file)
-        {
-          SVN_ERR(svn_wc__wq_build_file_remove(&work_item, db,
-                                               local_abspath,
-                                               conflict_working,
-                                               scratch_pool, scratch_pool));
-          *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
-          *removed_reject_files = TRUE;
-        }
-    }
+  SVN_ERR(remove_artifact_file_if_exists(&work_item, removed_reject_files,
+                                         db, local_abspath, conflict_old,
+                                         scratch_pool, scratch_pool));
+  *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
+
+  SVN_ERR(remove_artifact_file_if_exists(&work_item, removed_reject_files,
+                                         db, local_abspath, conflict_new,
+                                         scratch_pool, scratch_pool));
+  *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
+
+  SVN_ERR(remove_artifact_file_if_exists(&work_item, removed_reject_files,
+                                         db, local_abspath, conflict_working,
+                                         scratch_pool, scratch_pool));
+  *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
 
   return SVN_NO_ERROR;
 }
@@ -2518,7 +2530,6 @@ resolve_prop_conflict_on_node(svn_boolea
                               svn_wc_conflict_choice_t conflict_choice,
                               apr_pool_t *scratch_pool)
 {
-  svn_node_kind_t node_kind;
   const char *prop_reject_file;
   apr_hash_t *mine_props;
   apr_hash_t *their_old_props;
@@ -2601,21 +2612,14 @@ resolve_prop_conflict_on_node(svn_boolea
      If not the UI shows the conflict as already resolved
      (and in this case we just remove the in-db conflict) */
 
-  if (prop_reject_file)
-    {
-      SVN_ERR(svn_io_check_path(prop_reject_file, &node_kind, scratch_pool));
-      if (node_kind == svn_node_file)
-        {
-          svn_skel_t *work_item;
+  {
+    svn_skel_t *work_item;
 
-          SVN_ERR(svn_wc__wq_build_file_remove(&work_item, db,
-                                               local_abspath,
-                                               prop_reject_file,
-                                               scratch_pool, scratch_pool));
-          *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
-          *removed_reject_file = TRUE;
-        }
-    }
+    SVN_ERR(remove_artifact_file_if_exists(&work_item, removed_reject_file,
+                                           db, local_abspath, prop_reject_file,
+                                           scratch_pool, scratch_pool));
+    *work_items = svn_wc__wq_merge(*work_items, work_item, scratch_pool);
+  }
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_wc/props.c Tue Apr 30 
10:38:14 2013
@@ -1626,9 +1626,9 @@ validate_eol_prop_against_file(const cha
   if (mime_type && svn_mime_type_is_binary(mime_type->data))
     return svn_error_createf
       (SVN_ERR_ILLEGAL_TARGET, NULL,
-       _("Can't set '" SVN_PROP_EOL_STYLE "': "
+       _("Can't set '%s': "
          "file '%s' has binary mime type property"),
-       path_display);
+       SVN_PROP_EOL_STYLE, path_display);
 
   /* Now ask the getter for the contents of the file; this will do a
      newline translation.  All we really care about here is whether or

Modified: subversion/branches/fsfs-format7/subversion/po/de.po
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/po/de.po?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/po/de.po [UTF-8] (original)
+++ subversion/branches/fsfs-format7/subversion/po/de.po [UTF-8] Tue Apr 30 
10:38:14 2013
@@ -14369,7 +14369,7 @@ msgid ""
 msgstr ""
 "Aktiviert oder deaktiviert die Zwischenspeicherung von\n"
 "                             Deltas zwischen älteren Revisionen.\n"
-"                             Vorgabe ist »yes«.\n"
+"                             Vorgabe ist »no«.\n"
 "                             [nur für FSFS-Projektarchive verwendet]"
 
 #: ../svnserve/svnserve.c:227

Modified: subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c (original)
+++ subversion/branches/fsfs-format7/subversion/svnadmin/svnadmin.c Tue Apr 30 
10:38:14 2013
@@ -1161,6 +1161,7 @@ subcommand_load(apr_getopt_t *os, void *
   svn_error_t *err;
   struct svnadmin_opt_state *opt_state = baton;
   svn_repos_t *repos;
+  apr_file_t *file;
   svn_revnum_t lower = SVN_INVALID_REVNUM, upper = SVN_INVALID_REVNUM;
   svn_stream_t *stdin_stream, *stdout_stream = NULL;
 
@@ -1193,6 +1194,10 @@ subcommand_load(apr_getopt_t *os, void *
 
   /* Read the stream from STDIN.  Users can redirect a file. */
   SVN_ERR(svn_stream_for_stdin(&stdin_stream, pool));
+/*  SVN_ERR(svn_io_file_open(&file, 
"/home/stefan/develop/fsfs-format7/freebsd.dump",
+                           APR_READ |APR_BUFFERED,
+                           APR_OS_DEFAULT, pool));
+  stdin_stream = svn_stream_from_aprfile2(file, TRUE, pool);*/
 
   /* Progress feedback goes to STDOUT, unless they asked to suppress it. */
   if (! opt_state->quiet)

Modified: 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/random-test.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/random-test.c?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/random-test.c 
(original)
+++ 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/random-test.c 
Tue Apr 30 10:38:14 2013
@@ -500,6 +500,8 @@ random_combine_test(apr_pool_t *pool)
 {
   apr_uint32_t seed;
   svn_error_t *err = do_random_combine_test(pool, &seed);
+  if (err)
+    fprintf(stderr, "SEED: %lu\n", (unsigned long)seed);
   return err;
 }
 

Modified: 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h?rev=1477542&r1=1477541&r2=1477542&view=diff
==============================================================================
--- 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h
 (original)
+++ 
subversion/branches/fsfs-format7/subversion/tests/libsvn_delta/range-index-test.h
 Tue Apr 30 10:38:14 2013
@@ -27,7 +27,7 @@
 #include "../../libsvn_delta/compose_delta.c"
 
 static range_index_node_t *prev_node, *prev_prev_node;
-static apr_off_t
+static apr_size_t
 walk_range_index(range_index_node_t *node, const char **msg)
 {
   apr_off_t ret;
@@ -70,19 +70,18 @@ print_node_data(range_index_node_t *node
 {
   if (-node->target_offset == ndx)
     {
-      printf("   * Node: [%3"APR_OFF_T_FMT
-             ",%3"APR_OFF_T_FMT
-             ") = %-5"APR_OFF_T_FMT"%s\n",
+      printf("   * Node: [%3"APR_SIZE_T_FMT
+             ",%3"APR_SIZE_T_FMT
+             ") = %-5"APR_SIZE_T_FMT"%s\n",
              node->offset, node->limit, -node->target_offset, msg);
     }
   else
     {
-      printf("     Node: [%3"APR_OFF_T_FMT
-             ",%3"APR_OFF_T_FMT
-             ") = %"APR_OFF_T_FMT"\n",
+      printf("     Node: [%3"APR_SIZE_T_FMT
+             ",%3"APR_SIZE_T_FMT
+             ") = %"APR_SIZE_T_FMT"\n",
              node->offset, node->limit,
-             (node->target_offset < 0
-              ? -node->target_offset : node->target_offset));
+             node->target_offset);
     }
 }
 
@@ -154,13 +153,13 @@ random_range_index_test(apr_pool_t *pool
   ndx = create_range_index(pool);
   for (i = 1; i <= iterations; ++i)
     {
-      apr_off_t offset = svn_test_rand(&seed) % 47;
-      apr_off_t limit = offset + svn_test_rand(&seed) % 16 + 1;
+      apr_size_t offset = svn_test_rand(&seed) % 47;
+      apr_size_t limit = offset + svn_test_rand(&seed) % 16 + 1;
       range_list_node_t *list, *r;
-      apr_off_t ret;
+      apr_size_t ret;
       const char *msg2;
 
-      printf("%3d: Inserting [%3"APR_OFF_T_FMT",%3"APR_OFF_T_FMT") ...",
+      printf("%3d: Inserting [%3"APR_SIZE_T_FMT",%3"APR_SIZE_T_FMT") ...",
              i, offset, limit);
       splay_range_index(offset, ndx);
       list = build_range_list(offset, limit, ndx);
@@ -170,7 +169,7 @@ random_range_index_test(apr_pool_t *pool
       if (ret == 0)
         {
           for (r = list; r; r = r->next)
-            printf(" %s[%3"APR_OFF_T_FMT",%3"APR_OFF_T_FMT")",
+            printf(" %s[%3"APR_SIZE_T_FMT",%3"APR_SIZE_T_FMT")",
                    (r->kind == range_from_source ?
                     (++src_cp, "S") : (++tgt_cp, "T")),
                    r->offset, r->limit);


Reply via email to