Hey,
I make a patch to remove adm_access batons in svn_client__do_commit().
The function is used only in libsvn_client module, I think it is not necessary
to wrap the old function, so I modified the function directly. Is it ok?
I have run commit-tests.py and it passes all the tests. See below:
Log:
[[[
Rip out some adm_access usage in svn_client__do_commit() and update some
formatting.
* subversion/libsvn_client/client.h
(adm_access): Remove.
* subversion/libsvn_client/commit.c
(base_dir_access): Remove.
* subversion/libsvn_client/commit_util.c
(adm_access): Remove.
(svn_error_createf): Tweak format.
(local_abspath): Moved to the head of do_item_commit().
(editor->add_file): Tweak format.
(tmp_entry): Remove.
(editor->open_root): Tweak format.
(svn_wc_entry): Remove.
(svn_wc_transmit_prop_deltas): Use svn_wc_transmit_prop_deltas2 instead.
(editor->open_file): Tweak format.
(adm_access): Remove from svn_client__do_commit parameters.
(cb_baton.adm_access): Remove.
* subversion/libsvn_client/copy.c
(adm_access): Remove.
]]]
Modified:
trunk/subversion/libsvn_client/client.h
trunk/subversion/libsvn_client/commit.c
trunk/subversion/libsvn_client/commit_util.c
trunk/subversion/libsvn_client/copy.c
Index: subversion/libsvn_client/client.h
===================================================================
--- subversion/libsvn_client/client.h (revision 38565)
+++ subversion/libsvn_client/client.h (working copy)
@@ -940,7 +940,6 @@
svn_error_t *
svn_client__do_commit(const char *base_url,
apr_array_header_t *commit_items,
- svn_wc_adm_access_t *adm_access,
const svn_delta_editor_t *editor,
void *edit_baton,
const char *notify_path_prefix,
Index: subversion/libsvn_client/commit.c
===================================================================
--- subversion/libsvn_client/commit.c (revision 38565)
+++ subversion/libsvn_client/commit.c (working copy)
@@ -1649,10 +1649,9 @@
notify_prefix = svn_dirent_get_longest_ancestor(current_dir, base_dir, pool);
/* Perform the commit. */
- cmt_err = svn_client__do_commit(base_url, commit_items, base_dir_access,
- editor, edit_baton,
- notify_prefix,
- &tempfiles, &checksums, ctx, pool);
+ cmt_err = svn_client__do_commit(base_url, commit_items, editor, edit_baton,
+ notify_prefix, &tempfiles, &checksums, ctx,
+ pool);
/* Handle a successful commit. */
if ((! cmt_err)
Index: subversion/libsvn_client/commit_util.c
===================================================================
--- subversion/libsvn_client/commit_util.c (revision 38565)
+++ subversion/libsvn_client/commit_util.c (working copy)
@@ -1275,12 +1275,14 @@
void *file_baton = NULL;
const char *copyfrom_url = NULL;
apr_pool_t *file_pool = NULL;
- svn_wc_adm_access_t *adm_access = cb_baton->adm_access;
const svn_delta_editor_t *editor = cb_baton->editor;
apr_hash_t *file_mods = cb_baton->file_mods;
svn_client_ctx_t *ctx = cb_baton->ctx;
svn_error_t *err = SVN_NO_ERROR;
+ const char *local_abspath;
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath, item->path, pool));
+
/* Do some initializations. */
*dir_baton = NULL;
if (item->copyfrom_url)
@@ -1304,15 +1306,15 @@
if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_IS_COPY)
{
if (! copyfrom_url)
- return svn_error_createf
- (SVN_ERR_BAD_URL, NULL,
- _("Commit item '%s' has copy flag but no copyfrom URL"),
- svn_dirent_local_style(path, pool));
+ return svn_error_createf(
+ SVN_ERR_BAD_URL, NULL,
+ _("Commit item '%s' has copy flag but no copyfrom URL"),
+ svn_dirent_local_style(path, pool));
if (! SVN_IS_VALID_REVNUM(item->copyfrom_rev))
- return svn_error_createf
- (SVN_ERR_CLIENT_BAD_REVISION, NULL,
- _("Commit item '%s' has copy flag but an invalid revision"),
- svn_dirent_local_style(path, pool));
+ return svn_error_createf(
+ SVN_ERR_CLIENT_BAD_REVISION, NULL,
+ _("Commit item '%s' has copy flag but an invalid revision"),
+ svn_dirent_local_style(path, pool));
}
/* If a feedback table was supplied by the application layer,
@@ -1343,10 +1345,7 @@
if (item->kind == svn_node_file)
{
const svn_string_t *propval;
- const char *local_abspath;
- SVN_ERR(svn_dirent_get_absolute(&local_abspath, item->path,
- pool));
SVN_ERR(svn_wc_prop_get2(&propval, ctx->wc_ctx, local_abspath,
SVN_PROP_MIME_TYPE, pool, pool));
@@ -1396,18 +1395,18 @@
if (kind == svn_node_file)
{
SVN_ERR_ASSERT(parent_baton);
- SVN_ERR(editor->add_file
- (path, parent_baton, copyfrom_url,
- copyfrom_url ? item->copyfrom_rev : SVN_INVALID_REVNUM,
- file_pool, &file_baton));
+ SVN_ERR(editor->add_file(
+ path, parent_baton, copyfrom_url,
+ copyfrom_url ? item->copyfrom_rev : SVN_INVALID_REVNUM,
+ file_pool, &file_baton));
}
else
{
SVN_ERR_ASSERT(parent_baton);
- SVN_ERR(editor->add_directory
- (path, parent_baton, copyfrom_url,
- copyfrom_url ? item->copyfrom_rev : SVN_INVALID_REVNUM,
- pool, dir_baton));
+ SVN_ERR(editor->add_directory(
+ path, parent_baton, copyfrom_url,
+ copyfrom_url ? item->copyfrom_rev : SVN_INVALID_REVNUM,
+ pool, dir_baton));
}
/* Set other prop-changes, if available in the baton */
@@ -1436,8 +1435,6 @@
/* Now handle property mods. */
if (item->state_flags & SVN_CLIENT_COMMIT_ITEM_PROP_MODS)
{
- const svn_wc_entry_t *tmp_entry;
-
if (kind == svn_node_file)
{
if (! file_baton)
@@ -1457,39 +1454,33 @@
{
if (! parent_baton)
{
- SVN_ERR(editor->open_root
- (cb_baton->edit_baton, item->revision,
- pool, dir_baton));
+ SVN_ERR(editor->open_root(
+ cb_baton->edit_baton, item->revision,
+ pool, dir_baton));
}
else
{
- SVN_ERR(editor->open_directory
- (path, parent_baton, item->revision,
- pool, dir_baton));
+ SVN_ERR(editor->open_directory(
+ path, parent_baton, item->revision,
+ pool, dir_baton));
}
}
}
- /* Ensured by harvest_committables(), item->path will never be an
- excluded path. However, will it be deleted/absent items? I think
- committing an modification on a deleted/absent item does not make
- sense. So it's probably safe to turn off the show_hidden flag here.*/
- SVN_ERR(svn_wc_entry(&tmp_entry, item->path, adm_access, FALSE, pool));
-
/* When committing a directory that no longer exists in the
repository, a "not found" error does not occur immediately
upon opening the directory. It appears here during the delta
transmisssion. */
- err = svn_wc_transmit_prop_deltas
- (item->path, adm_access, tmp_entry, editor,
- (kind == svn_node_dir) ? *dir_baton : file_baton, NULL, pool);
+ err = svn_wc_transmit_prop_deltas2(
+ ctx->wc_ctx, local_abspath, editor,
+ (kind == svn_node_dir) ? *dir_baton : file_baton, pool);
if (err)
return fixup_out_of_date_error(path, kind, err);
- SVN_ERR(svn_wc_transmit_prop_deltas
- (item->path, adm_access, tmp_entry, editor,
- (kind == svn_node_dir) ? *dir_baton : file_baton, NULL, pool));
+ SVN_ERR(svn_wc_transmit_prop_deltas2(
+ ctx->wc_ctx, local_abspath, editor,
+ (kind == svn_node_dir) ? *dir_baton : file_baton, pool));
/* Make any additional client -> repository prop changes. */
if (item->outgoing_prop_changes)
@@ -1527,8 +1518,8 @@
{
SVN_ERR_ASSERT(parent_baton);
err = editor->open_file(path, parent_baton,
- item->revision,
- file_pool, &file_baton);
+ item->revision,
+ file_pool, &file_baton);
if (err)
return fixup_out_of_date_error(path, item->kind, err);
@@ -1563,7 +1554,6 @@
svn_error_t *
svn_client__do_commit(const char *base_url,
apr_array_header_t *commit_items,
- svn_wc_adm_access_t *adm_access,
const svn_delta_editor_t *editor,
void *edit_baton,
const char *notify_path_prefix,
@@ -1611,7 +1601,6 @@
}
/* Setup the callback baton. */
- cb_baton.adm_access = adm_access;
cb_baton.editor = editor;
cb_baton.edit_baton = edit_baton;
cb_baton.file_mods = file_mods;
Index: subversion/libsvn_client/copy.c
===================================================================
--- subversion/libsvn_client/copy.c (revision 38565)
+++ subversion/libsvn_client/copy.c (working copy)
@@ -1288,7 +1288,7 @@
pool));
/* Perform the commit. */
- SVN_ERR_W(svn_client__do_commit(top_dst_url, commit_items, adm_access,
+ SVN_ERR_W(svn_client__do_commit(top_dst_url, commit_items,
editor, edit_baton,
0, /* ### any notify_path_offset needed? */
NULL, NULL, ctx, pool),
Best
Huihuang
--------------
yellow.flying
2009-08-05
__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2380268
Received on 2009-08-05 04:48:47 CEST