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/12/21 13:43:37 UTC

svn commit: r1647131 - in /subversion/branches/fsx-id/subversion/libsvn_fs_x: dag.c fs.h low_level.c noderevs.c temp_serializer.c transaction.c

Author: stefan2
Date: Sun Dec 21 12:43:37 2014
New Revision: 1647131

URL: http://svn.apache.org/r1647131
Log:
On the fsx-id branch: Get rid of the last svn_fs_id_t in our noderev struct.
It has been kept for convenience but is now hardly used anymore. Construct
the respective API object on demand.

* subversion/libsvn_fs_x/fs.h
  (node_revision_t): Drop ID member.

* subversion/libsvn_fs_x/low_level.c
  (svn_fs_x__read_noderev): One element less to initialize.

* subversion/libsvn_fs_x/noderevs.c
  (svn_fs_x__noderevs_get,
   svn_fs_x__noderevs_get_func): Same.

* subversion/libsvn_fs_x/temp_serializer.c
  (svn_fs_x__noderev_serialize,
   svn_fs_x__noderev_deserialize): One sub-struct less to (de-)serialize.

* subversion/libsvn_fs_x/dag.c
  (copy_node_revision): One element less to copy.
  (svn_fs_x__dag_get_fs_id): Construct API level ID instead of copying it.
  (svn_fs_x__dag_copy): One element less to initialize.

* subversion/libsvn_fs_x/transaction.c
  (create_new_txn_noderev_from_rev): Directly initialize the noderev-ID.
  (svn_fs_x__get_txn,
   svn_fs_x__create_node): No longer use the API level ID as intermediary.
  (svn_fs_x__add_change): Construct the API level ID on demand.
  (svn_fs_x__create_successor,
   write_final_rev: Directly assign the returned ID object.

Modified:
    subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/fs.h
    subversion/branches/fsx-id/subversion/libsvn_fs_x/low_level.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/noderevs.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/temp_serializer.c
    subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/dag.c Sun Dec 21 12:43:37 2014
@@ -120,7 +120,6 @@ copy_node_revision(node_revision_t *node
                    apr_pool_t *pool)
 {
   node_revision_t *nr = apr_pmemdup(pool, noderev, sizeof(*noderev));
-  nr->id = svn_fs_x__id_copy(noderev->id, pool);
 
   if (noderev->copyfrom_path)
     nr->copyfrom_path = apr_pstrdup(pool, noderev->copyfrom_path);
@@ -201,7 +200,8 @@ svn_fs_x__dag_get_fs_id(const svn_fs_id_
 {
   node_revision_t *noderev;
   SVN_ERR(get_node_revision(&noderev, node));
-  *id = svn_fs_x__id_copy(noderev->id, result_pool);
+  *id = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id,
+                            result_pool);
 
   return SVN_NO_ERROR;
 }
@@ -1276,7 +1276,6 @@ svn_fs_x__dag_copy(dag_node_t *to_node,
       /* Create a successor with its predecessor pointing at the copy
          source. */
       to_noderev->predecessor_id = to_noderev->noderev_id;
-      to_noderev->id = NULL;
       if (to_noderev->predecessor_count != -1)
         to_noderev->predecessor_count++;
       to_noderev->created_path =

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/fs.h?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/fs.h (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/fs.h Sun Dec 21 12:43:37 2014
@@ -486,9 +486,6 @@ typedef struct node_revision_t
   /* node kind */
   svn_node_kind_t kind;
 
-  /* The node-id for this node-rev. */
-  const svn_fs_id_t *id;
-
   /* Predecessor node revision id.  Will be "unused" if there is no
      predecessor for this node revision. */
   svn_fs_x__id_part_t predecessor_id;

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/low_level.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/low_level.c?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/low_level.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/low_level.c Sun Dec 21 12:43:37 2014
@@ -446,9 +446,6 @@ svn_fs_x__read_noderev(node_revision_t *
   SVN_ERR(read_id_part(&noderev->node_id, headers, HEADER_NODE));
   SVN_ERR(read_id_part(&noderev->copy_id, headers, HEADER_COPY));
 
-  noderev->id = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id,
-                                    result_pool);
-
   /* Read the type. */
   value = svn_hash_gets(headers, HEADER_TYPE);
 

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/noderevs.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/noderevs.c?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/noderevs.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/noderevs.c Sun Dec 21 12:43:37 2014
@@ -430,9 +430,6 @@ svn_fs_x__noderevs_get(node_revision_t *
   SVN_ERR(get_id(&noderev->predecessor_id, container->ids,
                  binary_noderev->predecessor_id));
 
-  noderev->id = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id,
-                                    pool);
-
   if (binary_noderev->flags & NODEREV_HAS_COPYFROM)
     {
       noderev->copyfrom_path
@@ -879,9 +876,6 @@ svn_fs_x__noderevs_get_func(void **out,
   SVN_ERR(get_id(&noderev->predecessor_id, &ids,
                  binary_noderev->predecessor_id));
 
-  noderev->id = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id,
-                                    pool);
-
   if (binary_noderev->flags & NODEREV_HAS_COPYFROM)
     {
       noderev->copyfrom_path

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/temp_serializer.c?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/temp_serializer.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/temp_serializer.c Sun Dec 21 12:43:37 2014
@@ -338,7 +338,6 @@ svn_fs_x__noderev_serialize(svn_temp_ser
                             sizeof(*noderev));
 
   /* serialize sub-structures */
-  svn_fs_x__id_serialize(context, &noderev->id);
   serialize_representation(context, &noderev->prop_rep);
   serialize_representation(context, &noderev->data_rep);
 
@@ -368,7 +367,6 @@ svn_fs_x__noderev_deserialize(void *buff
     return;
 
   /* fixup of sub-structures */
-  svn_fs_x__id_deserialize(noderev, (svn_fs_id_t **)&noderev->id, pool);
   svn_temp_deserializer__resolve(noderev, (void **)&noderev->prop_rep);
   svn_temp_deserializer__resolve(noderev, (void **)&noderev->data_rep);
 

Modified: subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c?rev=1647131&r1=1647130&r2=1647131&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c Sun Dec 21 12:43:37 2014
@@ -1174,8 +1174,8 @@ create_new_txn_noderev_from_rev(svn_fs_t
 
   /* For the transaction root, the copyroot never changes. */
 
-  noderev->id = svn_fs_x__id_txn_create_root(txn_id, pool);
-  noderev->noderev_id = *svn_fs_x__id_noderev_id(noderev->id);
+  noderev->noderev_id.change_set = svn_fs_x__change_set_by_txn(txn_id);
+  noderev->noderev_id.number = SVN_FS_X__ITEM_INDEX_ROOT_NODE;
 
   return svn_fs_x__put_node_revision(fs, noderev, TRUE, pool);
 }
@@ -1414,19 +1414,17 @@ svn_fs_x__get_txn(transaction_t **txn_p,
 {
   transaction_t *txn;
   node_revision_t *noderev;
-  svn_fs_id_t *root_id;
 
   txn = apr_pcalloc(pool, sizeof(*txn));
   txn->proplist = apr_hash_make(pool);
 
   SVN_ERR(get_txn_proplist(txn->proplist, fs, txn_id, pool));
-  root_id = svn_fs_x__id_txn_create_root(txn_id, pool);
+  txn->root_id = svn_fs_x__id_txn_create_root(txn_id, pool);
 
   SVN_ERR(svn_fs_x__get_node_revision(&noderev, fs,
-                                      svn_fs_x__id_noderev_id(root_id),
+                                      svn_fs_x__id_noderev_id(txn->root_id),
                                       pool, pool));
 
-  txn->root_id = svn_fs_x__id_copy(noderev->id, pool);
   txn->base_id = svn_fs_x__id_create(&noderev->node_id,
                                      &noderev->predecessor_id, pool);
   txn->copies = NULL;
@@ -1631,27 +1629,22 @@ svn_fs_x__create_node(const svn_fs_id_t
                       svn_fs_x__txn_id_t txn_id,
                       apr_pool_t *pool)
 {
-  svn_fs_x__id_part_t node_id;
-  const svn_fs_id_t *id;
-  apr_uint64_t number;
-
   /* Get a new node-id for this node. */
-  SVN_ERR(get_new_txn_node_id(&node_id, fs, txn_id, pool));
+  SVN_ERR(get_new_txn_node_id(&noderev->node_id, fs, txn_id, pool));
+
+  /* Assign copy-id. */
+  noderev->copy_id = *copy_id;
 
-  /* Item number within this change set. */
-  SVN_ERR(allocate_item_index(&number, fs, txn_id, pool));
+  /* Noderev-id = Change set and item number within this change set. */
+  noderev->noderev_id.change_set = svn_fs_x__change_set_by_txn(txn_id);
+  SVN_ERR(allocate_item_index(&noderev->noderev_id.number, fs, txn_id,
+                              pool));
 
   /* Construct the ID object from all the above parts. */
-  id = svn_fs_x__id_txn_create(&node_id, txn_id, number, pool);
-  noderev->id = id;
-  noderev->copy_id = *copy_id;
-  noderev->node_id = node_id;
-  noderev->noderev_id = *svn_fs_x__id_noderev_id(id);
+  *id_p = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id, pool);
 
   SVN_ERR(svn_fs_x__put_node_revision(fs, noderev, FALSE, pool));
 
-  *id_p = id;
-
   return SVN_NO_ERROR;
 }
 
@@ -1822,7 +1815,7 @@ svn_fs_x__add_change(svn_fs_t *fs,
     {
       node_revision_t *noderev;
       SVN_ERR(svn_fs_x__get_node_revision(&noderev, fs, id, pool, pool));
-      fs_id = noderev->id;
+      fs_id = svn_fs_x__id_create(&noderev->node_id, id, pool);
     }
 
   /* Not using APR_BUFFERED to append change in one atomic write operation. */
@@ -2466,8 +2459,8 @@ svn_fs_x__create_successor(const svn_fs_
   SVN_ERR(allocate_item_index(&new_noderev->noderev_id.number, fs, txn_id,
                               pool));
 
-  new_noderev->id = svn_fs_x__id_create(&new_noderev->node_id,
-                                        &new_noderev->noderev_id, pool);
+  *new_id_p = svn_fs_x__id_create(&new_noderev->node_id,
+                                  &new_noderev->noderev_id, pool);
   if (! new_noderev->copyroot_path)
     {
       new_noderev->copyroot_path
@@ -2478,8 +2471,6 @@ svn_fs_x__create_successor(const svn_fs_
 
   SVN_ERR(svn_fs_x__put_node_revision(fs, new_noderev, FALSE, pool));
 
-  *new_id_p = new_noderev->id;
-
   return SVN_NO_ERROR;
 }
 
@@ -2943,9 +2934,7 @@ write_final_rev(const svn_fs_id_t **new_
 
   SVN_ERR(store_l2p_index_entry(fs, txn_id, my_offset,
                                 noderev->noderev_id.number, pool));
-  new_id = svn_fs_x__id_create(&noderev->node_id,  &noderev->noderev_id,
-                               pool);
-  noderev->id = new_id;
+  new_id = svn_fs_x__id_create(&noderev->node_id, &noderev->noderev_id, pool);
 
   if (ffd->rep_sharing_allowed)
     {
@@ -3011,7 +3000,7 @@ write_final_rev(const svn_fs_id_t **new_
   SVN_ERR(store_p2l_index_entry(fs, txn_id, &entry, pool));
 
   /* Return our ID that references the revision file. */
-  *new_id_p = noderev->id;
+  *new_id_p = new_id;
 
   return SVN_NO_ERROR;
 }