kfogel@collab.net wrote:
> Hmmm, I don't see any svn_client.h changes in there. They would be
> needed, because you'd have to publish the new svn_client_export4 API,
> and deprecate the old svn_client_export3 API, in the usual way. (See
> examples in the other header files, see HACKING).
>
> However, since svn_client_export3 is new in 1.2 anyway, and 1.2 has
> not been released yet, there's no need to make svn_client_export4.
> Just change svn_client_export3 as you need (remember that its API docs
> will need updating in svn_client.h too).
>
> Also, while not absolutely required, a regression test for the new
> feature is a huge bonus, and gives a patch higher precedence.
>
> .......
>
> Good change, overall. Can you resubmit it as described above? (Or if
> you don't have time, let me know, and I can make the adjustments.)
Ah, I hadn't noticed that it was new for 1.2. I've re-done the change
adding a parameter to svn_client_export3 (and updated svn_client.h)
instead of a new function. Patch attached.
I'm out of time today, but when I get a chance, I'll submit a patch
for the regression tests (when I figure out how they fit together).
[[[
Add --non-recursive parameter to "svn export"
* subversion/libsvn_client/export.c:
(svn_client_export3): add new "recursive" parameter that
gets passed through to svn_ra_do_update
(svn_client_export2): default to passing TRUE for new
"recurse" parameter
* subversion/include/svn_client.h:
(svn_client_export3): update public API to include new
"recursive" parameter"
* subversion/libsvn_client/externals.c:
(handle_external_item_change): update call to
svn_client_export3 to pass TRUE as the recursive value.
When traversing externals, if we're doing a nonrecursive
export, we should never get to this point, so TRUE should
always be the case.
* subversion/clients/cmdlind/export-cmd.c:
(svn_cl__export): use updated svn_client_export3 function and pass
inverse of --non-recursive command line through. Still defaults
to the original behaviour of a recursive export.
* subversion/clients/cmdline/main.c:
(svn_cl__cmd_table[]): add "N" option to "export" command
]]]
Index: subversion/include/svn_client.h
===================================================================
--- subversion/include/svn_client.h (revision 13058)
+++ subversion/include/svn_client.h (working copy)
@@ -1568,6 +1568,9 @@
* will use the standard eol marker. Any other value will cause the
* SVN_ERR_IO_UNKNOWN_EOL error to be returned.
*
+ * @a recurse passes through to svn_ra_do_update to make exports of
+ * directories recursive if TRUE.
+ *
* All allocations are done in @a pool.
*/
svn_error_t *
@@ -1578,6 +1581,7 @@
const svn_opt_revision_t *revision,
svn_boolean_t force,
svn_boolean_t ignore_externals,
+ svn_boolean_t recurse,
const char *native_eol,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
Index: subversion/libsvn_client/externals.c
===================================================================
--- subversion/libsvn_client/externals.c (revision 13058)
+++ subversion/libsvn_client/externals.c (working copy)
@@ -244,7 +244,8 @@
SVN_ERR (svn_client_export3 (NULL, new_item->url, path,
&(new_item->revision),
&(new_item->revision),
- TRUE, FALSE, NULL, ib->ctx, ib->pool));
+ TRUE, FALSE, TRUE, NULL,
+ ib->ctx, ib->pool));
else
SVN_ERR (svn_client__checkout_internal (NULL, new_item->url, path,
&(new_item->revision),
Index: subversion/libsvn_client/export.c
===================================================================
--- subversion/libsvn_client/export.c (revision 13058)
+++ subversion/libsvn_client/export.c (working copy)
@@ -744,6 +744,7 @@
const svn_opt_revision_t *revision,
svn_boolean_t force,
svn_boolean_t ignore_externals,
+ svn_boolean_t recurse,
const char *native_eol,
svn_client_ctx_t *ctx,
apr_pool_t *pool)
@@ -851,7 +852,7 @@
&reporter, &report_baton,
revnum,
"", /* no sub-target */
- TRUE, /* recurse */
+ recurse, /* recurse */
export_editor, edit_baton, pool));
SVN_ERR (reporter->set_path (report_baton, "", revnum,
@@ -929,7 +930,8 @@
peg_revision.kind = svn_opt_revision_unspecified;
return svn_client_export3 (result_rev, from, to, &peg_revision,
- revision, force, FALSE, native_eol, ctx, pool);
+ revision, force, FALSE, TRUE,
+ native_eol, ctx, pool);
}
Index: subversion/clients/cmdline/export-cmd.c
===================================================================
--- subversion/clients/cmdline/export-cmd.c (revision 13058)
+++ subversion/clients/cmdline/export-cmd.c (working copy)
@@ -74,6 +74,7 @@
err = svn_client_export3 (NULL, truefrom, to, &peg_revision,
&(opt_state->start_revision),
opt_state->force, opt_state->ignore_externals,
+ opt_state->nonrecursive ? FALSE : TRUE,
opt_state->native_eol, ctx,
pool);
if (err && err->apr_err == SVN_ERR_WC_OBSTRUCTED_UPDATE && !opt_state->force)
Index: subversion/clients/cmdline/main.c
===================================================================
--- subversion/clients/cmdline/main.c (revision 13058)
+++ subversion/clients/cmdline/main.c (working copy)
@@ -322,7 +322,7 @@
" If specified, PEGREV determines in which revision the target is "
"first\n"
" looked up.\n"),
- {'r', 'q', svn_cl__force_opt, SVN_CL__AUTH_OPTIONS,
+ {'r', 'q', 'N', svn_cl__force_opt, SVN_CL__AUTH_OPTIONS,
svn_cl__config_dir_opt, svn_cl__native_eol_opt,
svn_cl__ignore_externals_opt} },
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Feb 19 02:06:31 2005