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,