You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2018/01/12 14:47:10 UTC
svn commit: r1820997 -
/subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c
Author: julianfoad
Date: Fri Jan 12 14:47:10 2018
New Revision: 1820997
URL: http://svn.apache.org/viewvc?rev=1820997&view=rev
Log:
On the 'shelve-checkpoint' branch: factor out repeated code.
Modified:
subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c
Modified: subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c?rev=1820997&r1=1820996&r2=1820997&view=diff
==============================================================================
--- subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c (original)
+++ subversion/branches/shelve-checkpoint/subversion/svn/shelve-cmd.c Fri Jan 12 14:47:10 2018
@@ -671,6 +671,42 @@ svn_cl__shelf(apr_getopt_t *os,
return SVN_NO_ERROR;
}
+/* */
+static svn_error_t *
+shelf_shelve(int *new_version,
+ const char *name,
+ apr_array_header_t *targets,
+ svn_depth_t depth,
+ apr_array_header_t *changelists,
+ svn_boolean_t keep_local,
+ svn_boolean_t dry_run,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
+{
+ const char *local_abspath;
+
+ if (depth == svn_depth_unknown)
+ depth = svn_depth_infinity;
+
+ SVN_ERR(svn_cl__check_targets_are_local_paths(targets));
+
+ SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, scratch_pool));
+
+ svn_opt_push_implicit_dot_target(targets, scratch_pool);
+
+ /* ### TODO: check all paths are in same WC; for now use first path */
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath,
+ APR_ARRAY_IDX(targets, 0, char *),
+ scratch_pool));
+
+ SVN_ERR(shelve(new_version, name,
+ targets, depth, changelists,
+ keep_local, dry_run,
+ local_abspath, ctx, scratch_pool));
+
+ return SVN_NO_ERROR;
+}
+
/* This implements the `svn_opt_subcommand_t' interface. */
svn_error_t *
svn_cl__shelve(apr_getopt_t *os,
@@ -679,47 +715,30 @@ svn_cl__shelve(apr_getopt_t *os,
{
svn_cl__opt_state_t *opt_state = ((svn_cl__cmd_baton_t *) baton)->opt_state;
svn_client_ctx_t *ctx = ((svn_cl__cmd_baton_t *) baton)->ctx;
- const char *local_abspath;
const char *name;
apr_array_header_t *targets;
if (opt_state->quiet)
ctx->notify_func2 = NULL; /* Easy out: avoid unneeded work */
- SVN_ERR(svn_dirent_get_absolute(&local_abspath, "", pool));
-
SVN_ERR(get_next_argument(&name, os, pool, pool));
/* Parse the remaining arguments as paths. */
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
ctx, FALSE, pool));
- svn_opt_push_implicit_dot_target(targets, pool);
-
{
- svn_depth_t depth = opt_state->depth;
int new_version;
svn_error_t *err;
- SVN_ERR(svn_cl__check_targets_are_local_paths(targets));
-
- if (depth == svn_depth_unknown)
- depth = svn_depth_infinity;
-
- SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- /* ### TODO: check all paths are in same WC; for now use first path */
- SVN_ERR(svn_dirent_get_absolute(&local_abspath,
- APR_ARRAY_IDX(targets, 0, char *),
- pool));
-
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__make_log_msg_baton(&ctx->log_msg_baton3,
opt_state, NULL, ctx->config,
pool));
- err = shelve(&new_version, name,
- targets, depth, opt_state->changelists,
- opt_state->keep_local, opt_state->dry_run,
- local_abspath, ctx, pool);
+ err = shelf_shelve(&new_version, name,
+ targets, opt_state->depth, opt_state->changelists,
+ opt_state->keep_local, opt_state->dry_run,
+ ctx, pool);
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3,
err, pool));
@@ -918,28 +937,17 @@ svn_cl__checkpoint(apr_getopt_t *os,
}
else if (strcmp(subsubcommand, "save") == 0)
{
- svn_depth_t depth
- = (opt_state->depth == svn_depth_unknown) ? svn_depth_infinity
- : opt_state->depth;
int new_version;
svn_error_t *err;
- svn_opt_push_implicit_dot_target(targets, pool);
- SVN_ERR(svn_cl__check_targets_are_local_paths(targets));
- SVN_ERR(svn_cl__eat_peg_revisions(&targets, targets, pool));
- /* ### TODO: check all paths are in same WC; for now use first path */
- SVN_ERR(svn_dirent_get_absolute(&local_abspath,
- APR_ARRAY_IDX(targets, 0, char *),
- pool));
-
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__make_log_msg_baton(&ctx->log_msg_baton3,
opt_state, NULL, ctx->config,
pool));
- err = shelve(&new_version,
- name, targets, depth, opt_state->changelists,
- TRUE /*keep_local*/, opt_state->dry_run,
- local_abspath, ctx, pool);
+ err = shelf_shelve(&new_version, name,
+ targets, opt_state->depth, opt_state->changelists,
+ TRUE /*keep_local*/, opt_state->dry_run,
+ ctx, pool);
if (ctx->log_msg_func3)
SVN_ERR(svn_cl__cleanup_log_msg(ctx->log_msg_baton3,
err, pool));