subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r1622195 [1/3] - in /subversion/branches/move-tracking-2: ./ build/ notes/ notes/wc-ng/ subversion/bindings/ctypes-python/ subversion/bindings/cxxhl/ subversion/bindings/swig/ subversion/bindings/swig/include/ subversion/include/ subversion...
Date Wed, 03 Sep 2014 09:14:59 GMT
Author: julianfoad
Date: Wed Sep  3 09:14:58 2014
New Revision: 1622195

URL: http://svn.apache.org/r1622195
Log:
On the 'move-tracking-2' branch: catch up with trunk@1622193.

Added:
    subversion/branches/move-tracking-2/subversion/tests/templates/
      - copied from r1622193, subversion/trunk/subversion/tests/templates/
Modified:
    subversion/branches/move-tracking-2/   (props changed)
    subversion/branches/move-tracking-2/CHANGES
    subversion/branches/move-tracking-2/build/run_tests.py
    subversion/branches/move-tracking-2/notes/   (props changed)
    subversion/branches/move-tracking-2/notes/wc-ng/conflict-storage-2.0
    subversion/branches/move-tracking-2/subversion/bindings/ctypes-python/README   (props changed)
    subversion/branches/move-tracking-2/subversion/bindings/cxxhl/README   (props changed)
    subversion/branches/move-tracking-2/subversion/bindings/swig/include/svn_string.swg
    subversion/branches/move-tracking-2/subversion/bindings/swig/svn_wc.i
    subversion/branches/move-tracking-2/subversion/include/private/README   (props changed)
    subversion/branches/move-tracking-2/subversion/include/private/svn_cert.h   (props changed)
    subversion/branches/move-tracking-2/subversion/include/private/svn_diff_tree.h
    subversion/branches/move-tracking-2/subversion/include/private/svn_wc_private.h
    subversion/branches/move-tracking-2/subversion/include/svn_config.h
    subversion/branches/move-tracking-2/subversion/include/svn_fs.h
    subversion/branches/move-tracking-2/subversion/include/svn_wc.h
    subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c
    subversion/branches/move-tracking-2/subversion/libsvn_client/mtcc.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/caching.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.h
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure
    subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure-indexes
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/id.c
    subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/replay.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c
    subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/update.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/bit_array.c   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_subr/config_file.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/sorts.c
    subversion/branches/move-tracking-2/subversion/libsvn_subr/utf8proc/README   (props changed)
    subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/diff.h
    subversion/branches/move-tracking-2/subversion/libsvn_wc/diff_editor.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/diff_local.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/props.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/props.h
    subversion/branches/move-tracking-2/subversion/libsvn_wc/tree_conflicts.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/update_editor.c
    subversion/branches/move-tracking-2/subversion/libsvn_wc/wc_db.h
    subversion/branches/move-tracking-2/subversion/libsvn_wc/workqueue.c
    subversion/branches/move-tracking-2/subversion/mod_dav_svn/status.c   (props changed)
    subversion/branches/move-tracking-2/subversion/svn/cl-conflicts.c
    subversion/branches/move-tracking-2/subversion/svn/conflict-callbacks.c
    subversion/branches/move-tracking-2/subversion/svnfsfs/dump-index-cmd.c
    subversion/branches/move-tracking-2/subversion/svnfsfs/stats-cmd.c
    subversion/branches/move-tracking-2/subversion/svnfsfs/svnfsfs.c
    subversion/branches/move-tracking-2/subversion/svnfsfs/svnfsfs.h
    subversion/branches/move-tracking-2/subversion/tests/cmdline/authz_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/diff_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/relocate_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/svnadmin_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/actions.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/svntest/main.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/switch_tests.py
    subversion/branches/move-tracking-2/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/branches/move-tracking-2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/bit-array-test.c   (props changed)
    subversion/branches/move-tracking-2/subversion/tests/libsvn_subr/translate-test.c
    subversion/branches/move-tracking-2/subversion/tests/libsvn_wc/conflict-data-test.c
    subversion/branches/move-tracking-2/subversion/tests/manual/README   (props changed)
    subversion/branches/move-tracking-2/subversion/tests/svn_test_fs.c
    subversion/branches/move-tracking-2/subversion/tests/svn_test_main.c

Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
--- svn:auto-props (added)
+++ svn:auto-props Wed Sep  3 09:14:58 2014
@@ -0,0 +1,10 @@
+*.c = svn:eol-style=native
+*.cpp = svn:eol-style=native
+*.h = svn:eol-style=native
+*.hpp = svn:eol-style=native
+*.py = svn:eol-style=native
+*.pl = svn:eol-style=native
+*.rb = svn:eol-style=native
+*.txt = svn:eol-style=native
+README = svn:eol-style=native
+BRANCH-README = svn:eol-style=native

Propchange: subversion/branches/move-tracking-2/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1619126-1622193

Modified: subversion/branches/move-tracking-2/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/CHANGES?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/CHANGES (original)
+++ subversion/branches/move-tracking-2/CHANGES Wed Sep  3 09:14:58 2014
@@ -138,7 +138,6 @@ http://svn.apache.org/repos/asf/subversi
     * alow the use of libmagic to be configured via subversion configuration
       file or SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE env variable (r1572916)
     * store human readable info about SSL certs in auth store (r1573625)
-    * new 'http-pipelining' configuration option for serf (r1619072)
 
   - Client-side bugfixes:
     * export: fix problem exporting symlinks on windows (r1476093)

Modified: subversion/branches/move-tracking-2/build/run_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/build/run_tests.py?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/build/run_tests.py (original)
+++ subversion/branches/move-tracking-2/build/run_tests.py Wed Sep  3 09:14:58 2014
@@ -191,6 +191,13 @@ class TestHarness:
       TextColors.disable()
     self.skip_c_tests = (not not skip_c_tests)
 
+    # Parse out the FSFS version number
+    if self.fs_type is not None and self.fs_type.startswith('fsfs-v'):
+      self.fsfs_version = int(self.fs_type[6:])
+      self.fs_type = 'fsfs'
+    else:
+      self.fsfs_version = None
+
   def run(self, list):
     '''Run all test programs given in LIST. Print a summary of results, if
        there is a log file. Return zero iff all test programs passed.'''
@@ -384,6 +391,8 @@ class TestHarness:
       cmdline.append('--cleanup')
     if self.fs_type is not None:
       cmdline.append('--fs-type=' + self.fs_type)
+    if self.fsfs_version is not None:
+      cmdline.append('--fsfs-version=%d' % self.fsfs_version)
     if self.server_minor_version is not None:
       cmdline.append('--server-minor-version=' + self.server_minor_version)
     if self.list_tests is not None:
@@ -470,7 +479,7 @@ class TestHarness:
       svntest.main.options.enable_sasl = True
     if self.parallel is not None:
       try:
-        num_parallel = int(self.parallel) 
+        num_parallel = int(self.parallel)
       except exceptions.ValueError:
         num_parallel = svntest.main.default_num_threads
       if num_parallel > 1:
@@ -485,6 +494,8 @@ class TestHarness:
       svntest.main.options.cleanup = True
     if self.fs_type is not None:
       svntest.main.options.fs_type = self.fs_type
+    if self.fsfs_version is not None:
+      svntest.main.options.fsfs_version = self.fsfs_version
     if self.http_library is not None:
       svntest.main.options.http_library = self.http_library
     if self.server_minor_version is not None:

Propchange: subversion/branches/move-tracking-2/notes/
------------------------------------------------------------------------------
  Merged /subversion/trunk/notes:r1619126-1622193

Modified: subversion/branches/move-tracking-2/notes/wc-ng/conflict-storage-2.0
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/notes/wc-ng/conflict-storage-2.0?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/notes/wc-ng/conflict-storage-2.0 (original)
+++ subversion/branches/move-tracking-2/notes/wc-ng/conflict-storage-2.0 Wed Sep  3 09:14:58 2014
@@ -81,9 +81,14 @@ this format in a future version if we wa
 path from before the update/switch. The new location is already available in
 BASE so doesn't have to be duplicated. If the node is an addition the empty
 list is used.
+### stsp: The implementation *does* duplicate the new BASE node in the skel
+### in a second PATH_REV item.
 
 Merge will have 2 items: the left and right paths. These can come from a
 different repository.
+### stsp: The implementation is storing the pre-merge BASE node, and
+### the incoming merge-right node. What about merge-left?
+### How can merge-left/merge-right come from a different repository?
 
 An empty skel specifies that there is no location. (Tree conflicts and/or
 upgrade scenarios). Future versions may introduce other origins.

Propchange: subversion/branches/move-tracking-2/subversion/bindings/ctypes-python/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/move-tracking-2/subversion/bindings/cxxhl/README
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/move-tracking-2/subversion/bindings/swig/include/svn_string.swg
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/swig/include/svn_string.swg?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/bindings/swig/include/svn_string.swg (original)
+++ subversion/branches/move-tracking-2/subversion/bindings/swig/include/svn_string.swg Wed Sep  3 09:14:58 2014
@@ -208,11 +208,6 @@ typedef struct svn_string_t svn_string_t
 
 /* when storing an svn_string_t* into a structure, we must allocate the
    svn_string_t structure on the heap. */
-#ifdef SWIGPYTHON
-%typemap(memberin) const svn_string_t * {
-    $1 = svn_string_dup($input, _global_pool);
-}
-#endif
 #ifdef SWIGPERL
 %typemap(memberin) const svn_string_t * {
     $1 = svn_string_dup($input, _global_pool);

Modified: subversion/branches/move-tracking-2/subversion/bindings/swig/svn_wc.i
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/swig/svn_wc.i?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/bindings/swig/svn_wc.i (original)
+++ subversion/branches/move-tracking-2/subversion/bindings/swig/svn_wc.i Wed Sep  3 09:14:58 2014
@@ -40,8 +40,9 @@
 */
 %ignore svn_wc_set_auth_file;
 
-/* ### ignore this structure because the accessors will need a pool */
+/* ### ignore these structures because the accessors will need a pool */
 %ignore svn_wc_keywords_t;
+%ignore svn_wc_conflict_description2_t;
 
 #ifdef SWIGRUBY
 %ignore svn_wc_external_item_create;

Propchange: subversion/branches/move-tracking-2/subversion/include/private/README
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: subversion/branches/move-tracking-2/subversion/include/private/svn_cert.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_diff_tree.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_diff_tree.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_diff_tree.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_diff_tree.h Wed Sep  3 09:14:58 2014
@@ -103,18 +103,22 @@ extern "C" {
  * Note that it is possible for nodes to be described as a delete followed by
  * an add at the same place within one parent. (Iff the diff is reversed you
  * can see an add followed by a delete!)
+ *   ### "An add followed by a delete" sounds wrong.
  *
  * The directory batons live between the open and close events of a directory
  * and are thereby guaranteed to outlive the batons of their descendants.
  */
 
 /* Describes the source of a merge */
+/* ### You mean a diff?
+ * ### How come many users don't set the 'repos_relpath' field? */
 typedef struct svn_diff_source_t
 {
   /* Always available */
   svn_revnum_t revision;
 
   /* Depending on the driver available for copyfrom */
+  /* ### What? */
   const char *repos_relpath;
 } svn_diff_source_t;
 
@@ -137,9 +141,10 @@ typedef struct svn_diff_tree_processor_t
 {
   /** The value passed to svn_diff__tree_processor_create() as BATON.
    */
-  void *baton; /* To avoid an additional in some places */
+  void *baton; /* To avoid an additional in some places
+                * ### What? */
 
-  /* Called before a directories children are processed.
+  /* Called before a directory's children are processed.
    *
    * Set *SKIP_CHILDREN to TRUE, to skip calling callbacks for all
    * children.

Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_wc_private.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_wc_private.h Wed Sep  3 09:14:58 2014
@@ -1553,8 +1553,12 @@ svn_wc__get_switch_editor(const svn_delt
  * if they weren't modified after being copied. This allows the callbacks
  * to generate appropriate --git diff headers for such files.
  *
- * Normally, the difference from repository->working_copy is shown.
- * If @a reverse_order is TRUE, then show working_copy->repository diffs.
+ * Normally, the difference from repository->working_copy is shown. If
+ * @a reverse_order is TRUE, then we want to show working_copy->repository
+ * diffs. Most of the reversal is done by the caller; here we just swap the
+ * order of reporting a replacement so that the local addition is reported
+ * before the remote delete. (The caller's diff processor can then transform
+ * adds into deletes and deletes into adds, but it can't reorder the output.)
  *
  * If @a cancel_func is non-NULL, it will be used along with @a cancel_baton
  * to periodically check if the client has canceled the operation.

Modified: subversion/branches/move-tracking-2/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_config.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_config.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_config.h Wed Sep  3 09:14:58 2014
@@ -97,8 +97,6 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG_OPTION_HTTP_MAX_CONNECTIONS      "http-max-connections"
 /** @since New in 1.9. */
 #define SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS     "http-chunked-requests"
-/** @since New in 1.9. */
-#define SVN_CONFIG_OPTION_HTTP_PIPELINING           "http-pipelining"
 
 /** @since New in 1.9. */
 #define SVN_CONFIG_OPTION_SERF_LOG_COMPONENTS       "serf-log-components"
@@ -193,7 +191,7 @@ typedef struct svn_config_t svn_config_t
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_1 \
   "*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__"
 #define SVN_CONFIG__DEFAULT_GLOBAL_IGNORES_LINE_2 \
-  "*.rej *~ #*# .#* .*.swp .DS_Store"
+  "*.rej *~ #*# .#* .*.swp .DS_Store [Tt]humbs.db"
 #endif
 
 #define SVN_CONFIG_DEFAULT_GLOBAL_IGNORES \

Modified: subversion/branches/move-tracking-2/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_fs.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_fs.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_fs.h Wed Sep  3 09:14:58 2014
@@ -1408,7 +1408,7 @@ typedef enum svn_fs_path_change_kind_t
   svn_fs_path_change_replace,
 
   /** ignore all previous change items for path (internal-use only) */
-  svn_fs_path_change_reset,
+  svn_fs_path_change_reset
 } svn_fs_path_change_kind_t;
 
 /** Change descriptor.

Modified: subversion/branches/move-tracking-2/subversion/include/svn_wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_wc.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_wc.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_wc.h Wed Sep  3 09:14:58 2014
@@ -8175,7 +8175,17 @@ typedef svn_error_t *(*svn_changelist_re
 
 
 /**
- * ### TODO: Doc string, please.
+ * Beginning at @a local_abspath, crawl to @a depth to discover every path in
+ * or under @a local_abspath which belongs to one of the changelists in @a
+ * changelist_filter (an array of <tt>const char *</tt> changelist names).
+ * If @a changelist_filter is @c NULL, discover paths with any changelist.
+ * Call @a callback_func (with @a callback_baton) each time a
+ * changelist-having path is discovered.
+ *
+ * @a local_abspath is a local WC path.
+ *
+ * If @a cancel_func is not @c NULL, invoke it passing @a cancel_baton
+ * during the recursive walk.
  *
  * @since New in 1.7.
  */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/diff.c Wed Sep  3 09:14:58 2014
@@ -853,8 +853,9 @@ diff_content_changed(svn_boolean_t *wrot
                                    NULL, NULL, scratch_pool));
         }
 
-      /* We have a printed a diff for this path, mark it as visited. */
-      *wrote_header = TRUE;
+      /* If we have printed a diff for this path, mark it as visited. */
+      if (exitcode == 1)
+        *wrote_header = TRUE;
     }
   else   /* use libsvn_diff to generate the diff  */
     {
@@ -911,8 +912,9 @@ diff_content_changed(svn_boolean_t *wrot
                      dwi->cancel_func, dwi->cancel_baton,
                      scratch_pool));
 
-          /* We have a printed a diff for this path, mark it as visited. */
-          *wrote_header = TRUE;
+          /* If we have printed a diff for this path, mark it as visited. */
+          if (dwi->use_git_diff_format || svn_diff_contains_diffs(diff))
+            *wrote_header = TRUE;
         }
     }
 
@@ -1027,7 +1029,7 @@ diff_file_added(const char *relpath,
   else if (copyfrom_source && right_file)
     SVN_ERR(diff_content_changed(&wrote_header, relpath,
                                  left_file, right_file,
-                                 DIFF_REVNUM_NONEXISTENT,
+                                 copyfrom_source->revision,
                                  right_source->revision,
                                  svn_prop_get_value(left_props,
                                                     SVN_PROP_MIME_TYPE),
@@ -1190,7 +1192,8 @@ diff_dir_added(const char *relpath,
                          scratch_pool));
 
   return svn_error_trace(diff_props_changed(relpath,
-                                            DIFF_REVNUM_NONEXISTENT,
+                                            copyfrom_source ? copyfrom_source->revision
+                                                            : DIFF_REVNUM_NONEXISTENT,
                                             right_source->revision,
                                             prop_changes,
                                             left_props,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/mtcc.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/mtcc.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/mtcc.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/mtcc.c Wed Sep  3 09:14:58 2014
@@ -47,7 +47,7 @@ typedef enum mtcc_kind_t
   OP_OPEN_FILE,
   OP_ADD_DIR,
   OP_ADD_FILE,
-  OP_DELETE,
+  OP_DELETE
 } mtcc_kind_t;
 
 typedef struct mtcc_op_t

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/caching.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/caching.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/caching.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/caching.c Wed Sep  3 09:14:58 2014
@@ -119,23 +119,9 @@ read_config(const char **cache_namespace
                          SVN_FS_CONFIG_FSFS_CACHE_FULLTEXTS,
                          TRUE);
 
-  /* don't cache revprops by default.
-   * Revprop caching significantly speeds up operations like
-   * svn ls -v. However, it requires synchronization that may
-   * not be available or efficient in the current server setup.
-   *
-   * If the caller chose option "2", enable revprop caching if
-   * the required API support is there to make it efficient.
+  /* For now, always disable revprop caching.
    */
-  if (strcmp(svn_hash__get_cstring(fs->config,
-                                   SVN_FS_CONFIG_FSFS_CACHE_REVPROPS,
-                                   ""), "2"))
-    *cache_revprops
-      = svn_hash__get_bool(fs->config,
-                           SVN_FS_CONFIG_FSFS_CACHE_REVPROPS,
-                           FALSE);
-  else
-    *cache_revprops = svn_named_atomic__is_efficient();
+  *cache_revprops = FALSE;
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.c Wed Sep  3 09:14:58 2014
@@ -108,13 +108,16 @@ fs_serialized_init(svn_fs_t *fs, apr_poo
       /* POSIX fcntl locks are per-process, so we need a mutex for
          intra-process synchronization when grabbing the repository write
          lock. */
-      SVN_ERR(svn_mutex__init(&ffsd->fs_write_lock, TRUE, common_pool));
+      SVN_ERR(svn_mutex__init(&ffsd->fs_write_lock,
+                              SVN_FS_FS__USE_LOCK_MUTEX, common_pool));
 
       /* ... the pack lock ... */
-      SVN_ERR(svn_mutex__init(&ffsd->fs_pack_lock, TRUE, common_pool));
+      SVN_ERR(svn_mutex__init(&ffsd->fs_pack_lock,
+                              SVN_FS_FS__USE_LOCK_MUTEX, common_pool));
 
       /* ... not to mention locking the txn-current file. */
-      SVN_ERR(svn_mutex__init(&ffsd->txn_current_lock, TRUE, common_pool));
+      SVN_ERR(svn_mutex__init(&ffsd->txn_current_lock,
+                              SVN_FS_FS__USE_LOCK_MUTEX, common_pool));
 
       /* We also need a mutex for synchronizing access to the active
          transaction list and free transaction pointer. */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.h (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs.h Wed Sep  3 09:14:58 2014
@@ -185,6 +185,17 @@ extern "C" {
 /* The minimum format number that supports a configuration file (fsfs.conf) */
 #define SVN_FS_FS__MIN_CONFIG_FILE 4
 
+/* On most operating systems apr implements file locks per process, not
+   per file.  On Windows apr implements the locking as per file handle
+   locks, so we don't have to add our own mutex for just in-process
+   synchronization. */
+/* Compare ../libsvn_subr/named_atomic.c:USE_THREAD_MUTEX */
+#if APR_HAS_THREADS && !defined(WIN32)
+#define SVN_FS_FS__USE_LOCK_MUTEX 1
+#else
+#define SVN_FS_FS__USE_LOCK_MUTEX 0
+#endif
+
 /* Private FSFS-specific data shared between all svn_txn_t objects that
    relate to a particular transaction in a filesystem (as identified
    by transaction id and filesystem UUID).  Objects of this type are

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.c Wed Sep  3 09:14:58 2014
@@ -1279,6 +1279,27 @@ svn_fs_fs__youngest_rev(svn_revnum_t *yo
   return SVN_NO_ERROR;
 }
 
+int
+svn_fs_fs__shard_size(svn_fs_t *fs)
+{
+  fs_fs_data_t *ffd = fs->fsap_data;
+
+  return ffd->max_files_per_dir;
+}
+
+svn_error_t *
+svn_fs_fs__min_unpacked_rev(svn_revnum_t *min_unpacked,
+                            svn_fs_t *fs,
+                            apr_pool_t *pool)
+{
+  fs_fs_data_t *ffd = fs->fsap_data;
+
+  SVN_ERR(svn_fs_fs__update_min_unpacked_rev(fs, pool));
+  *min_unpacked = ffd->min_unpacked_rev;
+
+  return SVN_NO_ERROR;
+}
+
 svn_error_t *
 svn_fs_fs__ensure_revision_exists(svn_revnum_t rev,
                                   svn_fs_t *fs,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.h (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/fs_fs.h Wed Sep  3 09:14:58 2014
@@ -51,6 +51,17 @@ svn_error_t *svn_fs_fs__youngest_rev(svn
                                      svn_fs_t *fs,
                                      apr_pool_t *pool);
 
+/* Return the shard size of filesystem FS.  Return 0 for non-shared ones. */
+int
+svn_fs_fs__shard_size(svn_fs_t *fs);
+
+/* Set *MIN_UNPACKED to the oldest non-packed revision in filesystem FS.
+   Do any temporary allocation in POOL. */
+svn_error_t *
+svn_fs_fs__min_unpacked_rev(svn_revnum_t *min_unpacked,
+                            svn_fs_t *fs,
+                            apr_pool_t *pool);
+
 /* Return SVN_ERR_FS_NO_SUCH_REVISION if the given revision REV is newer
    than the current youngest revision in FS or is simply not a valid
    revision number, else return success. */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c Wed Sep  3 09:14:58 2014
@@ -147,8 +147,8 @@ txn_id_parse(svn_fs_fs__id_part_t *txn_i
   if (!locale_independent_strtol(&txn_id->revision, data, &end))
     return FALSE;
 
-  data = strchr(end, '-');
-  if (data == NULL)
+  data = end;
+  if (*data != '-')
     return FALSE;
 
   ++data;
@@ -344,8 +344,14 @@ svn_fs_fs__id_eq(const svn_fs_id_t *a,
   if (a == b)
     return TRUE;
 
-  return memcmp(&id_a->private_id, &id_b->private_id,
-                sizeof(id_a->private_id)) == 0;
+  return svn_fs_fs__id_part_eq(&id_a->private_id.node_id,
+                               &id_b->private_id.node_id)
+      && svn_fs_fs__id_part_eq(&id_a->private_id.copy_id,
+                               &id_b->private_id.copy_id)
+      && svn_fs_fs__id_part_eq(&id_a->private_id.txn_id,
+                               &id_b->private_id.txn_id)
+      && svn_fs_fs__id_part_eq(&id_a->private_id.rev_item,
+                               &id_b->private_id.rev_item);
 }
 
 
@@ -481,9 +487,8 @@ svn_fs_id_t *
 svn_fs_fs__id_copy(const svn_fs_id_t *source, apr_pool_t *pool)
 {
   const fs_fs__id_t *id = (const fs_fs__id_t *)source;
-  fs_fs__id_t *new_id = apr_palloc(pool, sizeof(*new_id));
+  fs_fs__id_t *new_id = apr_pmemdup(pool, id, sizeof(*new_id));
 
-  *new_id = *id;
   new_id->generic_id.fsap_data = new_id;
 
   return (svn_fs_id_t *)new_id;

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure Wed Sep  3 09:14:58 2014
@@ -37,8 +37,6 @@ repository) is:
     <shard>.pack/     Pack directory, if the repo has been packed (see below)
       pack            Pack file, if the repository has been packed (see below)
       manifest        Pack manifest file, if a pack file exists (see below)
-      pack.l2p        Log-to-phys index file (format 7+, see below)
-      pack.p2l        Phys-to-log index file (format 7+, see below)
   revprops/           Subdirectory containing rev-props
     <shard>/          Shard directory, if sharding is in use (see below)
       <revnum>        File containing rev-props for <revnum>
@@ -327,8 +325,10 @@ the pack file.  The offsets are stored a
 a newline character.
 
 Revision pack files using logical addressing don't use manifest files but
-index files instead.  The revisions inside a pack file will also get
-interleaved to reduce I/O for typical access patterns.
+appends index data to the revision contents.  The revisions inside a pack
+file will also get interleaved to reduce I/O for typical access patterns.
+There is no structural difference between packed and non-packed revision
+files in that mode.
 
 
 Packing revision properties (format 5: SQLite)
@@ -526,7 +526,8 @@ A revision file contains a concatenation
   * Text and property representations
   * Node-revisions
   * The changed-path data
-  * Two offsets at the very end (physical addressing mode only)
+  * Index data (logical addressing only)
+  * Revision / pack file footer (logical addressing only)
 
 A representation begins with a line containing either "PLAIN\n" or
 "DELTA\n" or "DELTA <rev> <item_index> <length>\n", where <rev>,
@@ -604,7 +605,7 @@ Starting with FS format 4, <action> may 
 "dir") of the node, after a hyphen; for example, an added directory
 may be represented as "add-dir".
 
-Before with FS format 7, <mergeinfo-mod> flag is not available.  It may
+Prior to FS format 7, <mergeinfo-mod> flag is not available.  It may
 also be missing in revisions upgraded from pre-f7 formats.
 
 In physical addressing mode, at the very end of a rev file is a pair of
@@ -612,6 +613,12 @@ lines containing "\n<root-offset> <cp-of
 the offset of the root directory node revision and <cp-offset> is the
 offset of the changed-path data.
 
+In logical addressing mode, the revision footer is pair of offsets,
+separated by a space and the whole is terminated a single byte.  That
+byte contains the length (as plain 8 bit value) of the footer excluding
+the length byte.  The first offset is the start of the log-to-phys index,
+the other is the start offset of the phys-to-log index.
+
 All numbers in the rev file format are unsigned and are represented as
 ASCII decimal.
 
@@ -732,11 +739,12 @@ digests, too, so you would simply iterat
 consult the files they reference for lock information.
 
 
-Index files
------------
+Index Data
+----------
 
 Format 7 introduces logical addressing that requires item indexes
 to be translated / mapped to physical rev / pack file offsets.
+These indexes are appended to the respective rev / pack file.
 
 Details of the binary format used by these index files can be
 found in structure-indexes.

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure-indexes
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure-indexes?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure-indexes (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/structure-indexes Wed Sep  3 09:14:58 2014
@@ -1,17 +1,17 @@
-This file describes the design, data model, and file formats of FSFS
-index files.
+This file describes the design, data model, and storage formats of FSFS
+index data.
 
 
 Design
 ======
 
-For each pack and each rev file using logical addressing, there is exactly
-two index files.  One, the log-to-phys index, maps the (rev, item_index)
+Each pack and each rev file using logical addressing contains exactly
+two index sections.  One, the log-to-phys index, maps the (rev, item_index)
 pairs to absolute file offsets.  The other, phys-to-log, is a reverse
 index that gives basic information on any file location.  This is enough
 to read and cache any data without traversing DAGs.
 
-Rev and pack files are immutable, so the same is true for index files.
+Rev and pack files are immutable, so the same is true for index data.
 During a transaction or while packing a file, a proto index file gets
 written (actually, one log-to-phys and one phys-to-log).  Its format is
 a simple concatenation of runtime structs and as such, an implementation
@@ -52,7 +52,7 @@ and pre-defined item_index values.
 Encoding
 --------
 
-The final index file format is tuned for space and decoding efficiency.
+The final index data format is tuned for space and decoding efficiency.
 Indexes are stored as a sequence of variable integers.  The encoding is
 as follows:
 
@@ -105,13 +105,13 @@ hierarchy:
   offset = offsets[item_index % page_size];
 
   Different log-to-phys indexes in the same repository may have different
-  page sizes but within any given index file, the page size is the same
-  and immutable.
+  page sizes but within any given index, the page size is the same and
+  immutable.
 
 header:
 
-  <first revision>   ... first revision covered by this index file
-  <revision count>   ... number of revision covered by this index file
+  <first revision>   ... first revision covered by this index
+  <revision count>   ... number of revision covered by this index
   <page size>        ... maximum number of entries per page
   <page table index> ... array, for each revision containing the index in
                          <page table> of the first page that belongs to
@@ -123,7 +123,7 @@ header:
 page table:
 
   <offset>           ... absolute position of the page contents within the
-                         index file
+                         index
   <entry count>      ... number of offset entries in the page.
                          Must match <header>.<page size> unless this is
                          the last page for the respective revision.
@@ -140,10 +140,10 @@ page:
                          pack file.  This has <entry count> entries.
 
                          
-Index file format
------------------
+Index on-disk format
+--------------------
 
-  file := header revisions pages offsets
+  index := header revisions pages offsets
 
   header := u(<header>.<first revision>) \
             u(<header>.<page size>) \
@@ -217,7 +217,7 @@ hierarchy:
   offset is does not match any actual item start.  To simplify the lookup,
   the last index page will have an "unused item" entry for the section
   behind EOF.  Holes aren't allowed as well, i.e. every byte of the rev /
-  pack is expected to be covered by the index file.
+  pack is expected to be covered by the index.
 
   Also, there may be items stretching across page borders or even over
   multiple pages.  The data model solves this issue by storing the item
@@ -227,7 +227,7 @@ hierarchy:
 
 header:
 
-  <first revision>   ... first revision covered by this index file
+  <first revision>   ... first revision covered by this index
   <file size>        ... size of the rev / pack file in bytes
   <page size>        ... number of bytes in the rev / pack file covered by
                          each index page
@@ -253,10 +253,10 @@ entry:
   <item_index>       ... item_index within that revision
 
 
-Index file format
------------------
+Index on-disk format
+--------------------
 
-  file := header pages items
+  index := header pages items
 
   header := u(<header>.<first revision>) \
             u(<header>.<file size>) \
@@ -303,7 +303,7 @@ are not allowed; zero-length items are.
 In transactions, the final revision number may not be known when writing
 the proto index file (e.g. while still writing the proto rev file).  Items
 with revision set to SVN_INVALID_REVNUM will therefore be automatically
-updated when creating the index file.  This is possible in conjunction
+updated when creating the final index.  This is possible in conjunction
 with rev files but not for pack files.
 
 

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
  Merged /subversion/trunk/subversion/libsvn_fs_x:r1619126-1622193

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/id.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/id.c Wed Sep  3 09:14:58 2014
@@ -264,7 +264,7 @@ svn_fs_x__id_check_related(const svn_fs_
   /* Items from different txns are unrelated. */
   if (   svn_fs_x__is_txn(id_a->noderev_id.change_set)
       && svn_fs_x__is_txn(id_b->noderev_id.change_set)
-      && id_a->noderev_id.change_set != id_a->noderev_id.change_set)
+      && id_a->noderev_id.change_set != id_b->noderev_id.change_set)
     return FALSE;
 
   /* related if they trace back to the same node creation */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c Wed Sep  3 09:14:58 2014
@@ -2460,7 +2460,7 @@ typedef enum copy_type_t
   copy_type_plain_add,
 
   /* add with history */
-  copy_type_add_with_history,
+  copy_type_add_with_history
 } copy_type_t;
 
 /* Copy the node at FROM_PATH under FROM_ROOT to TO_PATH under

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/ra_serf.h Wed Sep  3 09:14:58 2014
@@ -144,13 +144,6 @@ struct svn_ra_serf__session_t {
      i.e. is there a (reverse) proxy that does not support them?  */
   svn_boolean_t detect_chunking;
 
-  /* Can serf use HTTP pipelining, or should it send requests one by one.
-     HTTP pipelining is enabled by default. The only known case where it should
-     be disabled is when the server triggers SSL renegotiations in the middle
-     of HTTP traffic on a connection, which OpenSSL currently doesn't handle
-     well. See serf issue #135. */
-  svn_boolean_t http_pipelining;
-
   /* Our Version-Controlled-Configuration; may be NULL until we know it. */
   const char *vcc_url;
 

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/replay.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/replay.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/replay.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/replay.c Wed Sep  3 09:14:58 2014
@@ -61,7 +61,7 @@ typedef enum replay_state_e {
   REPLAY_CLOSE_DIRECTORY,
   REPLAY_CHANGE_DIRECTORY_PROP,
   REPLAY_CHANGE_FILE_PROP,
-  REPLAY_APPLY_TEXTDELTA,
+  REPLAY_APPLY_TEXTDELTA
 } replay_state_e;
 
 #define S_ SVN_XML_NAMESPACE

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/serf.c Wed Sep  3 09:14:58 2014
@@ -244,12 +244,6 @@ load_config(svn_ra_serf__session_t *sess
                                   SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS,
                                   "auto", svn_tristate_unknown));
 
-  /* Should we use HTTP pipelining. */
-  SVN_ERR(svn_config_get_bool(config, &session->http_pipelining,
-                              SVN_CONFIG_SECTION_GLOBAL,
-                              SVN_CONFIG_OPTION_HTTP_PIPELINING,
-                              TRUE));
-
 #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
   SVN_ERR(svn_config_get_int64(config, &log_components,
                                SVN_CONFIG_SECTION_GLOBAL,
@@ -317,12 +311,6 @@ load_config(svn_ra_serf__session_t *sess
                                       SVN_CONFIG_OPTION_HTTP_CHUNKED_REQUESTS,
                                       "auto", chunked_requests));
 
-      /* Should we use HTTP pipelining. */
-      SVN_ERR(svn_config_get_bool(config, &session->http_pipelining,
-                                  server_group,
-                                  SVN_CONFIG_OPTION_HTTP_PIPELINING,
-                                  session->http_pipelining));
-
 #if SERF_VERSION_AT_LEAST(1, 4, 0) && !defined(SVN_SERF_NO_LOGGING)
       SVN_ERR(svn_config_get_int64(config, &log_components,
                                    server_group,
@@ -582,10 +570,6 @@ svn_ra_serf__open(svn_ra_session_t *sess
   if (status)
     return svn_ra_serf__wrap_err(status, NULL);
 
-  if (!serf_sess->http_pipelining) {
-      serf_connection_set_max_outstanding_requests(serf_sess->conns[0]->conn, 1);
-  }
-
   /* Set the progress callback. */
   serf_context_set_progress_cb(serf_sess->context, svn_ra_serf__progress,
                                serf_sess);
@@ -787,10 +771,6 @@ ra_serf_dup_session(svn_ra_session_t *ne
   if (status)
     return svn_ra_serf__wrap_err(status, NULL);
 
-  if (!new_sess->http_pipelining) {
-      serf_connection_set_max_outstanding_requests(new_sess->conns[0]->conn, 1);
-  }
-
   /* Set the progress callback. */
   serf_context_set_progress_cb(new_sess->context, svn_ra_serf__progress,
                                new_sess);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/update.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/update.c Wed Sep  3 09:14:58 2014
@@ -723,11 +723,6 @@ open_connection_if_needed(svn_ra_serf__s
       if (status)
         return svn_ra_serf__wrap_err(status, NULL);
 
-      if (!sess->http_pipelining) {
-          serf_connection_set_max_outstanding_requests(sess->conns[cur]->conn,
-                                                       1);
-      }
-
       sess->num_conns++;
     }
 
@@ -757,22 +752,45 @@ get_best_connection(report_context_t *ct
   if (ctx->report_received && (ctx->sess->max_connections > 2))
     first_conn = 0;
 
-  /* Currently, we just cycle connections.  In the future we could
-     store the number of pending requests on each connection, or
-     perform other heuristics, to achieve better connection usage.
-     (As an optimization, if there's only one available auxiliary
-     connection to use, don't bother doing all the cur_conn math --
-     just return that one connection.)  */
+  /* If there's only one available auxiliary connection to use, don't bother
+     doing all the cur_conn math -- just return that one connection.  */
   if (ctx->sess->num_conns - first_conn == 1)
     {
       conn = ctx->sess->conns[first_conn];
     }
   else
     {
+#if SERF_VERSION_AT_LEAST(1, 4, 0)
+      /* Often one connection is slower than others, e.g. because the server
+         process/thread has to do more work for the particular set of requests.
+         In the worst case, when REQUEST_COUNT_TO_RESUME requests are queued
+         on such a slow connection, ra_serf will completely stop sending
+         requests.
+
+         The method used here selects the connection with the least amount of
+         pending requests, thereby giving more work to lightly loaded server
+         processes.
+       */
+      unsigned int i, min = INT_MAX, best_conn = first_conn;
+      for (i = first_conn; i < ctx->sess->num_conns; i++)
+        {
+          serf_connection_t *sc = ctx->sess->conns[i]->conn;
+          unsigned int pending = serf_connection_pending_requests(sc);
+          if (pending < min)
+            {
+              min = pending;
+              best_conn = i;
+            }
+        }
+      conn = ctx->sess->conns[best_conn];
+#else
+    /* We don't know how many requests are pending per connection, so just 
+       cycle them. */
       conn = ctx->sess->conns[ctx->sess->cur_conn];
       ctx->sess->cur_conn++;
       if (ctx->sess->cur_conn >= ctx->sess->num_conns)
         ctx->sess->cur_conn = first_conn;
+#endif
     }
   return conn;
 }

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_subr/bit_array.c
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/config_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/config_file.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/config_file.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/config_file.c Wed Sep  3 09:14:58 2014
@@ -940,15 +940,6 @@ svn_config_ensure(const char *config_dir
         "###                              HTTP operation."                   NL
         "###   http-chunked-requests      Whether to use chunked transfer"   NL
         "###                              encoding for HTTP requests body."  NL
-        "###   http-pipelining            Whether to use HTTP pipelining "   NL
-        "###                              or send requests one by one."      NL
-        "###                              Pipelining is enabled by default." NL
-        "###                              The only known case where it should"
-                                                                             NL
-        "###                              be disabled is when the server"    NL
-        "###                              triggers SSL renegotiations in the"NL
-        "###                              middle of HTTP traffic, resulting" NL
-        "###                              in SSL communication errors."      NL
         "###   neon-debug-mask            Debug mask for Neon HTTP library"  NL
         "###   ssl-authority-files        List of files, each of a trusted CA"
                                                                              NL

Modified: subversion/branches/move-tracking-2/subversion/libsvn_subr/sorts.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_subr/sorts.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_subr/sorts.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_subr/sorts.c Wed Sep  3 09:14:58 2014
@@ -244,14 +244,48 @@ svn_sort__array_lookup(const apr_array_h
    * hit location) first.  This speeds up linear scans. */
   if (hint)
     {
-      idx = *hint;
-      *hint = ++idx;
-      if (idx >= 0 && idx < array->nelts)
+      /* We intend to insert right behind *HINT.
+       * Exit this function early, if we actually can. */
+      idx = *hint + 1;
+      if (idx >= array->nelts)
         {
+          /* We intend to insert after the last entry.
+           * That is only allowed if that last entry is smaller than KEY.
+           * In that case, there will be no current entry, i.e. we must
+           * return NULL. */
+          apr_size_t offset;
+
+          *hint = array->nelts;
+          if (array->nelts == 0)
+            return NULL;
+
+          offset = (array->nelts - 1) * array->elt_size;
+          if (compare_func(array->elts + offset, key) < 0)
+            return NULL;
+        }
+      else if (idx > 0)
+        {
+          /* Intend to insert at a position inside the array, i.e. not
+           * at one of the boundaries.  The predecessor must be smaller
+           * and the current entry at IDX must be larger than KEY. */
+		  void *previous;
+
+          *hint = idx;
+		  previous = array->elts + (idx-1) * array->elt_size;
           result = array->elts + idx * array->elt_size;
-          if (!compare_func(result, key))
+          if (compare_func(previous, key) && !compare_func(result, key))
             return result;
         }
+      else if (idx <= 0)
+        {
+          /* Intend to insert at the beginning of an non-empty array.
+           * That requires the first entry to be larger than KEY. */
+          *hint = 0;
+          if (!compare_func(array->elts, key))
+            return array->elts;
+        }
+
+      /* The HINT did not help. */
     }
 
   idx = bsearch_lower_bound(key, array->elts, array->nelts, array->elt_size,

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_subr/utf8proc/README
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/conflicts.c Wed Sep  3 09:14:58 2014
@@ -1798,7 +1798,7 @@ read_tree_conflict_desc(svn_wc_conflict_
                         apr_pool_t *result_pool,
                         apr_pool_t *scratch_pool)
 {
-  svn_node_kind_t tc_kind;
+  svn_node_kind_t local_kind;
   svn_wc_conflict_reason_t reason;
   svn_wc_conflict_action_t action;
 
@@ -1806,14 +1806,56 @@ read_tree_conflict_desc(svn_wc_conflict_
             &reason, &action, NULL,
             db, local_abspath, conflict_skel, scratch_pool, scratch_pool));
 
-  if (left_version)
-    tc_kind = left_version->node_kind;
-  else if (right_version)
-    tc_kind = right_version->node_kind;
+  if (reason == svn_wc_conflict_reason_missing)
+    local_kind = svn_node_none;
+  else if (reason == svn_wc_conflict_reason_unversioned ||
+           reason == svn_wc_conflict_reason_obstructed)
+    SVN_ERR(svn_io_check_path(local_abspath, &local_kind, scratch_pool));
+  else if (operation == svn_wc_operation_merge)
+    {
+      /* ### If the merge replaced the node, this will read the kind of
+       * ### the merge-right node, which is not necessarily the node
+       * ### kind of the tree conflict victim.
+       * ### This needs the BASE node kind if the node was not replaced
+       * ### at the time the merge was run. But if the node was already
+       * ### replaced before the merge, it needs the kind of the replacing
+       * ### node. Ideally, we'd store the victim node kind in conflict
+       * ### storage instead of guessing it here...
+       */
+      /* Read the tree conflict victim's node kind from the working copy,
+         or if it doesn't exist directly from disk. */
+      SVN_ERR(svn_wc__db_read_kind(&local_kind, db, local_abspath,
+                                   TRUE /* allow missing */,
+                                   FALSE /* show deleted */,
+                                   FALSE /* show hidden */, scratch_pool));
+
+      if (local_kind == svn_node_unknown || local_kind == svn_node_none)
+        SVN_ERR(svn_io_check_path(local_abspath, &local_kind, scratch_pool));
+    }
+  else if (operation == svn_wc_operation_update ||
+           operation == svn_wc_operation_switch)
+    {
+      /* For updates, the left version corresponds to the pre-update state. */
+      if (left_version)
+        local_kind = left_version->node_kind;
+      else
+        {
+          /* No left version is available, so the conflict was flagged
+           * because of a locally added node which was not part of the
+           * BASE tree before the update. */
+          SVN_ERR(svn_wc__db_read_kind(&local_kind, db, local_abspath,
+                                       TRUE /* allow missing */,
+                                       TRUE /* show deleted */,
+                                       FALSE /* show hidden */, scratch_pool));
+          if (local_kind == svn_node_unknown || local_kind == svn_node_none)
+            SVN_ERR(svn_io_check_path(local_abspath, &local_kind,
+                                      scratch_pool));
+        }
+    }
   else
-    tc_kind = svn_node_file; /* Avoid assertion */
+    SVN_ERR_MALFUNCTION();
 
-  *desc = svn_wc_conflict_description_create_tree2(local_abspath, tc_kind,
+  *desc = svn_wc_conflict_description_create_tree2(local_abspath, local_kind,
                                                    operation,
                                                    left_version, right_version,
                                                    result_pool);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_wc/diff.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_wc/diff.h?rev=1622195&r1=1622194&r2=1622195&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_wc/diff.h (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_wc/diff.h Wed Sep  3 09:14:58 2014
@@ -47,9 +47,6 @@ extern "C" {
    svn_wc__db_status_added. When DIFF_PRISTINE is TRUE, report the pristine
    version of LOCAL_ABSPATH as ADDED. In this case an
    svn_wc__db_status_deleted may shadow an added or deleted node.
-
-   If CHANGELIST_HASH is not NULL and LOCAL_ABSPATH's changelist is not
-   in the changelist, don't report the node.
  */
 svn_error_t *
 svn_wc__diff_local_only_file(svn_wc__db_t *db,
@@ -57,7 +54,6 @@ svn_wc__diff_local_only_file(svn_wc__db_
                              const char *relpath,
                              const svn_diff_tree_processor_t *processor,
                              void *processor_parent_baton,
-                             apr_hash_t *changelist_hash,
                              svn_boolean_t diff_pristine,
                              svn_cancel_func_t cancel_func,
                              void *cancel_baton,
@@ -73,9 +69,6 @@ svn_wc__diff_local_only_file(svn_wc__db_
    svn_wc__db_status_added. When DIFF_PRISTINE is TRUE, report the pristine
    version of LOCAL_ABSPATH as ADDED. In this case an
    svn_wc__db_status_deleted may shadow an added or deleted node.
-
-   If CHANGELIST_HASH is not NULL and LOCAL_ABSPATH's changelist is not
-   in the changelist, don't report the node.
  */
 svn_error_t *
 svn_wc__diff_local_only_dir(svn_wc__db_t *db,
@@ -84,7 +77,6 @@ svn_wc__diff_local_only_dir(svn_wc__db_t
                             svn_depth_t depth,
                             const svn_diff_tree_processor_t *processor,
                             void *processor_parent_baton,
-                            apr_hash_t *changelist_hash,
                             svn_boolean_t diff_pristine,
                             svn_cancel_func_t cancel_func,
                             void *cancel_baton,
@@ -132,7 +124,6 @@ svn_wc__diff_base_working_diff(svn_wc__d
                                const char *local_abspath,
                                const char *relpath,
                                svn_revnum_t revision,
-                               apr_hash_t *changelist_hash,
                                const svn_diff_tree_processor_t *processor,
                                void *processor_dir_baton,
                                svn_boolean_t diff_pristine,
@@ -140,6 +131,32 @@ svn_wc__diff_base_working_diff(svn_wc__d
                                void *cancel_baton,
                                apr_pool_t *scratch_pool);
 
+/* Return a tree processor filter that filters by changelist membership.
+ *
+ * This filter only passes on the changes for a file if the file's path
+ * (in the WC) is assigned to one of the changelists in @a changelist_hash.
+ * It also passes on the opening and closing of each directory that contains
+ * such a change, and possibly also of other directories, but not addition
+ * or deletion or changes to a directory.
+ *
+ * If @a changelist_hash is null then no filtering is performed and the
+ * returned diff processor is driven exactly like the input @a processor.
+ *
+ * @a wc_ctx is the WC context and @a root_local_abspath is the WC path of
+ * the root of the diff (for which relpath = "" in the diff processor).
+ *
+ * Allocate the returned diff processor in @a result_pool, or if no
+ * filtering is required then the input pointer @a processor itself may be
+ * returned.
+ */
+const svn_diff_tree_processor_t *
+svn_wc__changelist_filter_tree_processor_create(
+                                const svn_diff_tree_processor_t *processor,
+                                svn_wc_context_t *wc_ctx,
+                                const char *root_local_abspath,
+                                apr_hash_t *changelist_hash,
+                                apr_pool_t *result_pool);
+
 
 #ifdef __cplusplus
 }



Mime
View raw message