You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/03/04 18:32:06 UTC

svn commit: r1574144 - in /subversion/trunk/subversion: libsvn_fs/ libsvn_fs_base/ libsvn_fs_fs/ libsvn_fs_x/

Author: stefan2
Date: Tue Mar  4 17:32:05 2014
New Revision: 1574144

URL: http://svn.apache.org/r1574144
Log:
Since we introduced symbolic names for all kinds of node relationships
in r1554800, let's use them instead of magic values everywhere in the
FS layer.  There is no actual change to the logic.

* subversion/libsvn_fs/fs-loader.h
  (id_vtable_t): Use the new enum as the return value of compare.
                 Tweak formatting for consistency.

* subversion/libsvn_fs/fs-loader.c
  (svn_fs_check_related,
   svn_fs_compare_ids): Convert the new FS ID vtable return value type
                        to the FS API level type.

* subversion/libsvn_fs_base/id.h
  (svn_fs_base__id_compare): Update return type to match vtable.

* subversion/libsvn_fs_base/id.c
  (svn_fs_base__id_compare): Update implementation.

* subversion/libsvn_fs_base/tree.c
  (get_copy_inheritance,
   base_node_relation,
   txn_body_copy): Update BDB-internal users of that function. 

* subversion/libsvn_fs_fs/id.h
  (svn_fs_fs__id_compare): Similar change as in BDB.

* subversion/libsvn_fs_fs/id.c
  (svn_fs_fs__id_compare): Ditto.

* subversion/libsvn_fs_fs/tree.c
  (get_copy_inheritance): Update FSFS-internal users of that function.

* subversion/libsvn_fs_x/id.h
  (svn_fs_x__id_compare): Similar change as in BDB.

* subversion/libsvn_fs_x/id.c
  (svn_fs_x__id_compare): Ditto.

* subversion/libsvn_fs_x/tree.c
  (get_copy_inheritance): Update FSX-internal users of that function.

Suggested by: julianfoad

Modified:
    subversion/trunk/subversion/libsvn_fs/fs-loader.c
    subversion/trunk/subversion/libsvn_fs/fs-loader.h
    subversion/trunk/subversion/libsvn_fs_base/id.c
    subversion/trunk/subversion/libsvn_fs_base/id.h
    subversion/trunk/subversion/libsvn_fs_base/tree.c
    subversion/trunk/subversion/libsvn_fs_fs/id.c
    subversion/trunk/subversion/libsvn_fs_fs/id.h
    subversion/trunk/subversion/libsvn_fs_fs/tree.c
    subversion/trunk/subversion/libsvn_fs_x/id.c
    subversion/trunk/subversion/libsvn_fs_x/id.h
    subversion/trunk/subversion/libsvn_fs_x/tree.c

Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
+++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Tue Mar  4 17:32:05 2014
@@ -1725,13 +1725,21 @@ svn_fs_unparse_id(const svn_fs_id_t *id,
 svn_boolean_t
 svn_fs_check_related(const svn_fs_id_t *a, const svn_fs_id_t *b)
 {
-  return (a->vtable->compare(a, b) != -1);
+  return (a->vtable->compare(a, b) == svn_fs_node_same);
 }
 
 int
 svn_fs_compare_ids(const svn_fs_id_t *a, const svn_fs_id_t *b)
 {
-  return a->vtable->compare(a, b);
+  switch (a->vtable->compare(a, b))
+    {
+    case svn_fs_node_same:
+      return 0;
+    case svn_fs_node_common_ancestor:
+      return 1;
+    default:
+      return -1;
+    }
 }
 
 svn_error_t *

Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-loader.h?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs/fs-loader.h (original)
+++ subversion/trunk/subversion/libsvn_fs/fs-loader.h Tue Mar  4 17:32:05 2014
@@ -427,8 +427,10 @@ typedef struct history_vtable_t
 
 typedef struct id_vtable_t
 {
-  svn_string_t *(*unparse)(const svn_fs_id_t *id, apr_pool_t *pool);
-  int (*compare)(const svn_fs_id_t *a, const svn_fs_id_t *b);
+  svn_string_t *(*unparse)(const svn_fs_id_t *id,
+                           apr_pool_t *pool);
+  svn_fs_node_relation_t (*compare)(const svn_fs_id_t *a,
+                                    const svn_fs_id_t *b);
 } id_vtable_t;
 
 

Modified: subversion/trunk/subversion/libsvn_fs_base/id.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/id.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_base/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_base/id.c Tue Mar  4 17:32:05 2014
@@ -108,13 +108,14 @@ svn_fs_base__id_check_related(const svn_
 }
 
 
-int
+svn_fs_node_relation_t
 svn_fs_base__id_compare(const svn_fs_id_t *a,
                         const svn_fs_id_t *b)
 {
   if (svn_fs_base__id_eq(a, b))
-    return 0;
-  return (svn_fs_base__id_check_related(a, b) ? 1 : -1);
+    return svn_fs_node_same;
+  return (svn_fs_base__id_check_related(a, b) ? svn_fs_node_common_ancestor
+                                              : svn_fs_node_unrelated);
 }
 
 

Modified: subversion/trunk/subversion/libsvn_fs_base/id.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/id.h?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_base/id.h (original)
+++ subversion/trunk/subversion/libsvn_fs_base/id.h Tue Mar  4 17:32:05 2014
@@ -53,9 +53,9 @@ svn_boolean_t svn_fs_base__id_eq(const s
 svn_boolean_t svn_fs_base__id_check_related(const svn_fs_id_t *a,
                                             const svn_fs_id_t *b);
 
-/* Return 0 if A and B are equal, 1 if they are related, -1 otherwise. */
-int svn_fs_base__id_compare(const svn_fs_id_t *a,
-                            const svn_fs_id_t *b);
+/* Return the noderev relationship between A and B. */
+svn_fs_node_relation_t svn_fs_base__id_compare(const svn_fs_id_t *a,
+                                               const svn_fs_id_t *b);
 
 /* Create an ID based on NODE_ID, COPY_ID, and TXN_ID, allocated in
    POOL. */

Modified: subversion/trunk/subversion/libsvn_fs_base/tree.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_base/tree.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_base/tree.c (original)
+++ subversion/trunk/subversion/libsvn_fs_base/tree.c Tue Mar  4 17:32:05 2014
@@ -570,7 +570,8 @@ get_copy_inheritance(copy_id_inherit_t *
     {
       copy_t *copy;
       SVN_ERR(svn_fs_bdb__get_copy(&copy, fs, child_copy_id, trail, pool));
-      if (svn_fs_base__id_compare(copy->dst_noderev_id, child_id) == -1)
+      if (   svn_fs_base__id_compare(copy->dst_noderev_id, child_id)
+          == svn_fs_node_unrelated)
         {
           *inherit_p = copy_id_inherit_parent;
           return SVN_NO_ERROR;
@@ -1047,15 +1048,7 @@ base_node_relation(svn_fs_node_relation_
   SVN_ERR(base_node_id(&id_a, root_a, path_a, pool));
   SVN_ERR(base_node_id(&id_b, root_b, path_b, pool));
 
-  switch (svn_fs_base__id_compare(id_a, id_b))
-    {
-      case 0:  *relation = svn_fs_node_same;
-               break;
-      case 1:  *relation = svn_fs_node_common_ancestor;
-               break;
-      default: *relation = svn_fs_node_unrelated;
-               break;
-    }
+  *relation = svn_fs_base__id_compare(id_a, id_b);
 
   return SVN_NO_ERROR;
 }
@@ -3172,7 +3165,7 @@ txn_body_copy(void *baton,
   if ((to_parent_path->node)
       && (svn_fs_base__id_compare(svn_fs_base__dag_get_id(from_node),
                                   svn_fs_base__dag_get_id
-                                  (to_parent_path->node)) == 0))
+                                  (to_parent_path->node)) == svn_fs_node_same))
     return SVN_NO_ERROR;
 
   if (! from_root->is_txn_root)

Modified: subversion/trunk/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/id.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/id.c Tue Mar  4 17:32:05 2014
@@ -317,13 +317,14 @@ svn_fs_fs__id_check_related(const svn_fs
 }
 
 
-int
+svn_fs_node_relation_t
 svn_fs_fs__id_compare(const svn_fs_id_t *a,
                       const svn_fs_id_t *b)
 {
   if (svn_fs_fs__id_eq(a, b))
-    return 0;
-  return (svn_fs_fs__id_check_related(a, b) ? 1 : -1);
+    return svn_fs_node_same;
+  return (svn_fs_fs__id_check_related(a, b) ? svn_fs_node_common_ancestor
+                                            : svn_fs_node_unrelated);
 }
 
 int

Modified: subversion/trunk/subversion/libsvn_fs_fs/id.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/id.h?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/id.h (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/id.h Tue Mar  4 17:32:05 2014
@@ -114,9 +114,9 @@ svn_boolean_t svn_fs_fs__id_eq(const svn
 svn_boolean_t svn_fs_fs__id_check_related(const svn_fs_id_t *a,
                                           const svn_fs_id_t *b);
 
-/* Return 0 if A and B are equal, 1 if they are related, -1 otherwise. */
-int svn_fs_fs__id_compare(const svn_fs_id_t *a,
-                          const svn_fs_id_t *b);
+/* Return the noderev relationship between A and B. */
+svn_fs_node_relation_t svn_fs_fs__id_compare(const svn_fs_id_t *a,
+                                             const svn_fs_id_t *b);
 
 /* Return 0 if A and B are equal, 1 if A is "greater than" B, -1 otherwise. */
 int svn_fs_fs__id_part_compare(const svn_fs_fs__id_part_t *a,

Modified: subversion/trunk/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/tree.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/tree.c Tue Mar  4 17:32:05 2014
@@ -860,7 +860,7 @@ get_copy_inheritance(copy_id_inherit_t *
   SVN_ERR(get_dag(&copyroot_node, copyroot_root, copyroot_path, FALSE, pool));
   copyroot_id = svn_fs_fs__dag_get_id(copyroot_node);
 
-  if (svn_fs_fs__id_compare(copyroot_id, child_id) == -1)
+  if (svn_fs_fs__id_compare(copyroot_id, child_id) == svn_fs_node_unrelated)
     return SVN_NO_ERROR;
 
   /* Determine if we are looking at the child via its original path or

Modified: subversion/trunk/subversion/libsvn_fs_x/id.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/id.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/id.c Tue Mar  4 17:32:05 2014
@@ -272,13 +272,14 @@ svn_fs_x__id_check_related(const svn_fs_
 }
 
 
-int
+svn_fs_node_relation_t
 svn_fs_x__id_compare(const svn_fs_id_t *a,
                      const svn_fs_id_t *b)
 {
   if (svn_fs_x__id_eq(a, b))
-    return 0;
-  return (svn_fs_x__id_check_related(a, b) ? 1 : -1);
+    return svn_fs_node_same;
+  return (svn_fs_x__id_check_related(a, b) ? svn_fs_node_common_ancestor
+                                           : svn_fs_node_unrelated);
 }
 
 int

Modified: subversion/trunk/subversion/libsvn_fs_x/id.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/id.h?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/id.h (original)
+++ subversion/trunk/subversion/libsvn_fs_x/id.h Tue Mar  4 17:32:05 2014
@@ -126,9 +126,9 @@ svn_boolean_t svn_fs_x__id_eq(const svn_
 svn_boolean_t svn_fs_x__id_check_related(const svn_fs_id_t *a,
                                          const svn_fs_id_t *b);
 
-/* Return 0 if A and B are equal, 1 if they are related, -1 otherwise. */
-int svn_fs_x__id_compare(const svn_fs_id_t *a,
-                         const svn_fs_id_t *b);
+/* Return the noderev relationship between A and B. */
+svn_fs_node_relation_t svn_fs_x__id_compare(const svn_fs_id_t *a,
+                                            const svn_fs_id_t *b);
 
 /* Return 0 if A and B are equal, 1 if A is "greater than" B, -1 otherwise. */
 int svn_fs_x__id_part_compare(const svn_fs_x__id_part_t *a,

Modified: subversion/trunk/subversion/libsvn_fs_x/tree.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/tree.c?rev=1574144&r1=1574143&r2=1574144&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/tree.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/tree.c Tue Mar  4 17:32:05 2014
@@ -838,7 +838,7 @@ get_copy_inheritance(copy_id_inherit_t *
   SVN_ERR(get_dag(&copyroot_node, copyroot_root, copyroot_path, FALSE, pool));
   copyroot_id = svn_fs_x__dag_get_id(copyroot_node);
 
-  if (svn_fs_x__id_compare(copyroot_id, child_id) == -1)
+  if (svn_fs_x__id_compare(copyroot_id, child_id) == svn_fs_node_unrelated)
     return SVN_NO_ERROR;
 
   /* Determine if we are looking at the child via its original path or