I need some help using the svn_delta_editor.
I'm trying to submit a new file to the Repository and seem to have most of
the operations working OK, on svn_delta_editor_t->close_edit() (which is
commit right?) I get:
Out of date: 'SubVersionRA' in transaction '3n'
SubVersionRA is 2nd level folder in the path of the file I am trying to add.
Ie /trunk/SubVersionRA/testdata/add/myfilename.txt
I think the problem might lie with the calls to
svn_delta_editor_t->open_directory
Should I be recursively calling ->open_direcotry for each sub folder or just
make on call for folder '/trunk/SubVersionRA/testdata/add' ?
Also, if you just want to add the new file to the HEAD revision, is it OK to
pass in SVN_INVALID_REVNUM as the revision, if not what should I be doing?
Here's the code snippet :
ra_lib->get_commit_editor(session, &commitEditor, &editBaton, "This is the
commit message", __commit_callback, commitBaton, subpool);
// Get a baton for the root folder.
commitEditor->open_root(editBaton, REVISION_HEAD, subpool, &rootBaton);
// TODO parse the supplied resourcePath and open the specified folder.
commitEditor->open_directory("trunk", rootBaton, REVISION_HEAD, subpool,
&folder1Baton);
commitEditor->open_directory("SubVersionRA", folder1Baton, REVISION_HEAD,
subpool, &folder2Baton);
commitEditor->open_directory("testdata", folder2Baton, REVISION_HEAD,
subpool, &folder3Baton);
commitEditor->open_directory("add", folder3Baton, REVISION_HEAD, subpool,
&folder4Baton);
commitEditor->add_file("myfilename.txt", folder4Baton, NULL, REVISION_HEAD,
subpool, &fileBaton);
// No need to supply the base text checksum as we are adding a new file.
commitEditor->apply_textdelta(fileBaton, /* baseTextCheckSum */ NULL,
subpool, &handler, &handlerBaton);
// Get a stream from which we can read the content.
contents = __create_svn_stream_for_added_resource(env, resourceContent,
subpool);
svn_txdelta_send_stream(contents, handler, handlerBaton, NULL /*digest */,
pool);
// TODO grab the textCheckSum when applying the delta and compare during
close.
commitEditor->close_file(fileBaton, /* textCheckSum */ NULL, subpool);
commitEditor->close_directory(folder4Baton, subpool);
commitEditor->close_directory(folder3Baton, subpool);
commitEditor->close_directory(folder2Baton, subpool);
commitEditor->close_directory(folder1Baton, subpool);
commitEditor->close_directory(rootBaton, subpool);
// Commit.
commitEditor->close_edit(editBaton, subpool);
William
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed May 4 08:22:43 2005