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 2013/03/08 04:15:49 UTC

svn commit: r1454229 - in /subversion/branches/fsfs-format7/subversion/libsvn_fs_fs: id.c id.h transaction.c

Author: stefan2
Date: Fri Mar  8 03:15:47 2013
New Revision: 1454229

URL: http://svn.apache.org/r1454229
Log:
On the new fsfs-format7 branch: allow for txn root nodes to be
created without specifying dummy node and copy IDs.

This is part of the "numerical IDs" patch series.

* subversion/libsvn_fs_fs/id.h
  (svn_fs_fs__id_txn_create_root): declare new internal API

* subversion/libsvn_fs_fs/id.c
  (svn_fs_fs__id_txn_create_root): implement it

* subversion/libsvn_fs_fs/transaction.c
  (svn_fs_fs__get_txn,
   commit_body): call the new more specific API

Modified:
    subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.c
    subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.h
    subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c

Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.c?rev=1454229&r1=1454228&r2=1454229&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.c Fri Mar  8 03:15:47 2013
@@ -183,6 +183,24 @@ static id_vtable_t id_vtable = {
   svn_fs_fs__id_compare
 };
 
+svn_fs_id_t *
+svn_fs_fs__id_txn_create_root(const char *txn_id,
+                              apr_pool_t *pool)
+{
+  fs_fs__id_t *id = apr_pcalloc(pool, sizeof(*id));
+
+  /* node ID and copy ID are "0" */
+  
+  id->node_id = "0";
+  id->copy_id = "0";
+  id->txn_id = apr_pstrdup(pool, txn_id);
+  id->rev = SVN_INVALID_REVNUM;
+
+  id->generic_id.vtable = &id_vtable;
+  id->generic_id.fsap_data = &id;
+
+  return (svn_fs_id_t *)id;
+}
 
 svn_fs_id_t *
 svn_fs_fs__id_txn_create(const char *node_id,

Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.h
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.h?rev=1454229&r1=1454228&r2=1454229&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.h (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/id.h Fri Mar  8 03:15:47 2013
@@ -65,6 +65,10 @@ svn_boolean_t svn_fs_fs__id_check_relate
 int svn_fs_fs__id_compare(const svn_fs_id_t *a,
                           const svn_fs_id_t *b);
 
+/* Create the txn root ID for transaction TXN_ID.  Allocate it in POOL. */
+svn_fs_id_t *svn_fs_fs__id_txn_create_root(const char *txn_id,
+                                           apr_pool_t *pool);
+
 /* Create an ID within a transaction based on NODE_ID, COPY_ID, and
    TXN_ID, allocated in POOL. */
 svn_fs_id_t *svn_fs_fs__id_txn_create(const char *node_id,

Modified: subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c?rev=1454229&r1=1454228&r2=1454229&view=diff
==============================================================================
--- subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c (original)
+++ subversion/branches/fsfs-format7/subversion/libsvn_fs_fs/transaction.c Fri Mar  8 03:15:47 2013
@@ -1249,7 +1249,7 @@ svn_fs_fs__get_txn(transaction_t **txn_p
   txn->proplist = apr_hash_make(pool);
 
   SVN_ERR(get_txn_proplist(txn->proplist, fs, txn_id, pool));
-  root_id = svn_fs_fs__id_txn_create("0", "0", txn_id, pool);
+  root_id = svn_fs_fs__id_txn_create_root(txn_id, pool);
 
   SVN_ERR(svn_fs_fs__get_node_revision(&noderev, fs, root_id, pool));
 
@@ -3039,7 +3039,7 @@ commit_body(void *baton, apr_pool_t *poo
   SVN_ERR(get_file_offset(&initial_offset, proto_file, pool));
 
   /* Write out all the node-revisions and directory contents. */
-  root_id = svn_fs_fs__id_txn_create("0", "0", cb->txn->id, pool);
+  root_id = svn_fs_fs__id_txn_create_root(cb->txn->id, pool);
   SVN_ERR(write_final_rev(&new_root_id, proto_file, new_rev, cb->fs, root_id,
                           start_node_id, start_copy_id, initial_offset,
                           cb->reps_to_cache, cb->reps_hash, cb->reps_pool,