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/24 11:14:52 UTC
svn commit: r1647757 -
/subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c
Author: stefan2
Date: Wed Dec 24 10:14:52 2014
New Revision: 1647757
URL: http://svn.apache.org/r1647757
Log:
On the fsx-id branch: Switch txn commit code over to our internal ID type.
* subversion/libsvn_fs_x/transaction.c
(validate_root_noderev): Directly construct the needed noderev-ID.
(write_final_rev): Switch the returned ID to our internal type.
(commit_body): Update caller.
Modified:
subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c
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=1647757&r1=1647756&r2=1647757&view=diff
==============================================================================
--- subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c (original)
+++ subversion/branches/fsx-id/subversion/libsvn_fs_x/transaction.c Wed Dec 24 10:14:52 2014
@@ -2730,16 +2730,13 @@ validate_root_noderev(svn_fs_t *fs,
/* Compute HEAD_PREDECESSOR_COUNT. */
{
- svn_fs_root_t *head_revision;
- const svn_fs_id_t *head_root_id;
+ svn_fs_x__noderev_id_t head_root_id;
node_revision_t *head_root_noderev;
/* Get /@HEAD's noderev. */
- SVN_ERR(svn_fs_x__revision_root(&head_revision, fs, head_revnum, pool));
- SVN_ERR(svn_fs_x__node_id(&head_root_id, head_revision, "/", pool));
+ svn_fs_x__init_rev_root(&head_root_id, head_revnum);
SVN_ERR(svn_fs_x__get_node_revision(&head_root_noderev, fs,
- svn_fs_x__id_noderev_id(head_root_id),
- pool, pool));
+ &head_root_id, pool, pool));
head_predecessor_count = head_root_noderev->predecessor_count;
}
@@ -2786,8 +2783,8 @@ get_final_id(svn_fs_x__id_part_t *part,
/* Copy a node-revision specified by id ID in fileystem FS from a
transaction into the proto-rev-file FILE. Set *NEW_ID_P to a
- pointer to the new node-id which will be allocated in POOL.
- If this is a directory, copy all children as well.
+ pointer to the new noderev-id. If this is a directory, copy all
+ children as well.
START_NODE_ID and START_COPY_ID are
the first available node and copy ids for this filesystem, for older
@@ -2811,7 +2808,7 @@ get_final_id(svn_fs_x__id_part_t *part,
Temporary allocations are also from POOL. */
static svn_error_t *
-write_final_rev(const svn_fs_id_t **new_id_p,
+write_final_rev(svn_fs_x__noderev_id_t *new_id_p,
apr_file_t *file,
svn_revnum_t rev,
svn_fs_t *fs,
@@ -2825,7 +2822,7 @@ write_final_rev(const svn_fs_id_t **new_
{
node_revision_t *noderev;
apr_off_t my_offset;
- const svn_fs_id_t *new_id;
+ svn_fs_x__noderev_id_t new_id;
svn_fs_x__id_part_t noderev_id;
fs_x_data_t *ffd = fs->fsap_data;
svn_fs_x__txn_id_t txn_id = svn_fs_x__get_txn_id(id->change_set);
@@ -2834,11 +2831,12 @@ write_final_rev(const svn_fs_id_t **new_
svn_stream_t *file_stream;
apr_pool_t *subpool;
- *new_id_p = NULL;
-
/* Check to see if this is a transaction node. */
if (txn_id == SVN_FS_X__INVALID_TXN_ID)
- return SVN_NO_ERROR;
+ {
+ svn_fs_x__id_part_reset(new_id_p);
+ return SVN_NO_ERROR;
+ }
subpool = svn_pool_create(pool);
SVN_ERR(svn_fs_x__get_node_revision(&noderev, fs, id, pool, subpool));
@@ -2860,8 +2858,9 @@ write_final_rev(const svn_fs_id_t **new_
SVN_ERR(write_final_rev(&new_id, file, rev, fs, &dirent->id,
initial_offset, reps_to_cache, reps_hash,
reps_pool, FALSE, subpool));
- if (new_id && (svn_fs_x__id_rev(new_id) == rev))
- dirent->id = *svn_fs_x__id_noderev_id(new_id);
+ if ( svn_fs_x__id_part_used(&new_id)
+ && (svn_fs_x__get_revnum(new_id.change_set) == rev))
+ dirent->id = new_id;
}
if (noderev->data_rep
@@ -2922,7 +2921,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);
+ new_id = noderev->noderev_id;
if (ffd->rep_sharing_allowed)
{
@@ -3281,7 +3280,7 @@ commit_body(void *baton, apr_pool_t *poo
fs_x_data_t *ffd = cb->fs->fsap_data;
const char *old_rev_filename, *rev_filename, *proto_filename;
const char *revprop_filename, *final_revprop;
- const svn_fs_id_t *root_id, *new_root_id;
+ svn_fs_x__id_part_t root_id, new_root_id;
svn_revnum_t old_rev, new_rev;
apr_file_t *proto_file;
void *proto_file_lockcookie;
@@ -3334,9 +3333,8 @@ commit_body(void *baton, apr_pool_t *poo
SVN_ERR(svn_fs_x__get_file_offset(&initial_offset, proto_file, pool));
/* Write out all the node-revisions and directory contents. */
- root_id = svn_fs_x__id_txn_create_root(txn_id, pool);
- SVN_ERR(write_final_rev(&new_root_id, proto_file, new_rev, cb->fs,
- svn_fs_x__id_noderev_id(root_id),
+ svn_fs_x__init_txn_root(&root_id, txn_id);
+ SVN_ERR(write_final_rev(&new_root_id, proto_file, new_rev, cb->fs, &root_id,
initial_offset, cb->reps_to_cache, cb->reps_hash,
cb->reps_pool, TRUE, pool));