Author: rinrab Date: Thu May 29 18:42:21 2025 New Revision: 1925954 URL: http://svn.apache.org/viewvc?rev=1925954&view=rev Log: On the 'utf8-cmdline-prototype' branch: Factor out find_root_url() from svn_client__process_target_array() that will take care of pwd and access the working copy on its own.
Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c Modified: subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c URL: http://svn.apache.org/viewvc/subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c?rev=1925954&r1=1925953&r2=1925954&view=diff ============================================================================== --- subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c (original) +++ subversion/branches/utf8-cmdline-prototype/subversion/libsvn_client/cmdline.c Thu May 29 18:42:21 2025 @@ -108,6 +108,33 @@ check_root_url_of_target(const char **ro return SVN_NO_ERROR; } +static svn_error_t * +find_root_url(const char **root_url_p, + svn_client_ctx_t *ctx, + apr_pool_t *pool) +{ + /* + * Use the current directory's root url if one wasn't found using the + * arguments. + */ + if (*root_url_p == NULL) + { + const char *current_abspath; + svn_error_t *err; + + SVN_ERR(svn_dirent_get_absolute(¤t_abspath, "", pool)); + err = svn_client_get_repos_root(root_url_p, NULL /* uuid */, + current_abspath, ctx, pool, pool); + if (err || *root_url_p == NULL) + return svn_error_create(SVN_ERR_WC_NOT_WORKING_COPY, err, + _("Resolving '^/': no repository root " + "found in the target arguments or " + "in the current directory")); + } + + return SVN_NO_ERROR; +} + /* Note: This is substantially copied from svn_opt__args_to_target_array() in * order to move to libsvn_client while maintaining backward compatibility. */ @@ -276,24 +303,7 @@ svn_client__process_target_array(apr_arr /* Only resolve relative urls if there were some actually found earlier. */ if (rel_url_found) { - /* - * Use the current directory's root url if one wasn't found using the - * arguments. - */ - if (root_url == NULL) - { - const char *current_abspath; - svn_error_t *err; - - SVN_ERR(svn_dirent_get_absolute(¤t_abspath, "", pool)); - err = svn_client_get_repos_root(&root_url, NULL /* uuid */, - current_abspath, ctx, pool, pool); - if (err || root_url == NULL) - return svn_error_create(SVN_ERR_WC_NOT_WORKING_COPY, err, - _("Resolving '^/': no repository root " - "found in the target arguments or " - "in the current directory")); - } + SVN_ERR(find_root_url(&root_url, ctx, pool)); *targets_p = apr_array_make(pool, output_targets->nelts, sizeof(const char *));