Author: svn-role Date: Thu Apr 16 04:00:47 2015 New Revision: 1674003 URL: http://svn.apache.org/r1674003 Log: Merge the r1673785 group from trunk:
* r1673785, r1673803 Add a 'null-blame' command to svnbench Justification: Provides a tool to end users for diagnosing performance problems. Doesn't affect other code and otherwise we can only add it at 1.10. Votes: +1: rhuijben, stefan2, jcorvel Added: subversion/branches/1.9.x/subversion/svnbench/null-blame-cmd.c - copied, changed from r1673785, subversion/trunk/subversion/svnbench/null-blame-cmd.c Modified: subversion/branches/1.9.x/ (props changed) subversion/branches/1.9.x/STATUS subversion/branches/1.9.x/subversion/include/private/svn_client_private.h subversion/branches/1.9.x/subversion/libsvn_client/client.h subversion/branches/1.9.x/subversion/svnbench/cl.h subversion/branches/1.9.x/subversion/svnbench/svnbench.c Propchange: subversion/branches/1.9.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Apr 16 04:00:47 2015 @@ -90,4 +90,4 @@ /subversion/branches/verify-at-commit:1462039-1462408 /subversion/branches/verify-keep-going:1439280-1546110 /subversion/branches/wc-collate-path:1402685-1480384 -/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663338,1663347,1663355,1663374,1663450,1663697,1663706,1663738,1663749,1663791,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664653,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665318,1665437-1665438,1665611-1665612,1665845,1665850,1665852,1665886,1665894,1665896,1666096,1666270,1666272,1666379,1666449,1666690,1666851,1667101,1667106-1667107,1667233,1667235,1667301,1667471,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1669743,1669746,1669749,1669945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,1672372,1672404,1672511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673228,1673282,1673445,1673691 +/subversion/trunk:1660545-1660547,1660549-1662901,1663003,1663183-1663184,1663338,1663347,1663355,1663374,1663450,1663697,1663706,1663738,1663749,1663791,1664078,1664080,1664084-1664085,1664187,1664191,1664193,1664200,1664344,1664476,1664480-1664481,1664483,1664489-1664490,1664507,1664520-1664521,1664523,1664526-1664527,1664531-1664532,1664588,1664653,1664684,1664927,1664938-1664940,1664978,1664984,1664997,1665164,1665195,1665318,1665437-1665438,1665611-1665612,1665845,1665850,1665852,1665886,1665894,1665896,1666096,1666270,1666272,1666379,1666449,1666690,1666851,1667101,1667106-1667107,1667233,1667235,1667301,1667471,1667941,1667976,1668320,1668598-1668600,1668602-1668603,1668607-1668608,1668618,1669743,1669746,1669749,1669945,1670139,1670149,1670152,1670329,1670337,1670347,1670353,1671164,1671388,1672295,1672311,1672372,1672404,1672511-1672512,1672578,1672728,1673044,1673062-1673063,1673065,1673153,1673228,1673282,1673445,1673691,1673785,1673803 Modified: subversion/branches/1.9.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/STATUS?rev=1674003&r1=1674002&r2=1674003&view=diff ============================================================================== --- subversion/branches/1.9.x/STATUS (original) +++ subversion/branches/1.9.x/STATUS Thu Apr 16 04:00:47 2015 @@ -174,11 +174,3 @@ Veto-blocked changes: Approved changes: ================= - - * r1673785, r1673803 - Add a 'null-blame' command to svnbench - Justification: - Provides a tool to end users for diagnosing performance problems. Doesn't affect other - code and otherwise we can only add it at 1.10. - Votes: - +1: rhuijben, stefan2, jcorvel Modified: subversion/branches/1.9.x/subversion/include/private/svn_client_private.h URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/include/private/svn_client_private.h?rev=1674003&r1=1674002&r2=1674003&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/include/private/svn_client_private.h (original) +++ subversion/branches/1.9.x/subversion/include/private/svn_client_private.h Thu Apr 16 04:00:47 2015 @@ -40,6 +40,51 @@ extern "C" { #endif /* __cplusplus */ +/* Set *REVNUM to the revision number identified by REVISION. + + If REVISION->kind is svn_opt_revision_number, just use + REVISION->value.number, ignoring LOCAL_ABSPATH and RA_SESSION. + + Else if REVISION->kind is svn_opt_revision_committed, + svn_opt_revision_previous, or svn_opt_revision_base, or + svn_opt_revision_working, then the revision can be identified + purely based on the working copy's administrative information for + LOCAL_ABSPATH, so RA_SESSION is ignored. If LOCAL_ABSPATH is not + under revision control, return SVN_ERR_UNVERSIONED_RESOURCE, or if + LOCAL_ABSPATH is null, return SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED. + + Else if REVISION->kind is svn_opt_revision_date or + svn_opt_revision_head, then RA_SESSION is used to retrieve the + revision from the repository (using REVISION->value.date in the + former case), and LOCAL_ABSPATH is ignored. If RA_SESSION is null, + return SVN_ERR_CLIENT_RA_ACCESS_REQUIRED. + + Else if REVISION->kind is svn_opt_revision_unspecified, set + *REVNUM to SVN_INVALID_REVNUM. + + If YOUNGEST_REV is non-NULL, it is an in/out parameter. If + *YOUNGEST_REV is valid, use it as the youngest revision in the + repository (regardless of reality) -- don't bother to lookup the + true value for HEAD, and don't return any value in *REVNUM greater + than *YOUNGEST_REV. If *YOUNGEST_REV is not valid, and a HEAD + lookup is required to populate *REVNUM, then also populate + *YOUNGEST_REV with the result. This is useful for making multiple + serialized calls to this function with a basically static view of + the repository, avoiding race conditions which could occur between + multiple invocations with HEAD lookup requests. + + Else return SVN_ERR_CLIENT_BAD_REVISION. + + Use SCRATCH_POOL for any temporary allocation. */ +svn_error_t * +svn_client__get_revision_number(svn_revnum_t *revnum, + svn_revnum_t *youngest_rev, + svn_wc_context_t *wc_ctx, + const char *local_abspath, + svn_ra_session_t *ra_session, + const svn_opt_revision_t *revision, + apr_pool_t *scratch_pool); + /* Return true if KIND is a revision kind that is dependent on the working * copy. Otherwise, return false. */ #define SVN_CLIENT__REVKIND_NEEDS_WC(kind) \ Modified: subversion/branches/1.9.x/subversion/libsvn_client/client.h URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/libsvn_client/client.h?rev=1674003&r1=1674002&r2=1674003&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/libsvn_client/client.h (original) +++ subversion/branches/1.9.x/subversion/libsvn_client/client.h Thu Apr 16 04:00:47 2015 @@ -73,52 +73,6 @@ typedef struct svn_client__private_ctx_t svn_client__private_ctx_t * svn_client__get_private_ctx(svn_client_ctx_t *ctx); - -/* Set *REVNUM to the revision number identified by REVISION. - - If REVISION->kind is svn_opt_revision_number, just use - REVISION->value.number, ignoring LOCAL_ABSPATH and RA_SESSION. - - Else if REVISION->kind is svn_opt_revision_committed, - svn_opt_revision_previous, or svn_opt_revision_base, or - svn_opt_revision_working, then the revision can be identified - purely based on the working copy's administrative information for - LOCAL_ABSPATH, so RA_SESSION is ignored. If LOCAL_ABSPATH is not - under revision control, return SVN_ERR_UNVERSIONED_RESOURCE, or if - LOCAL_ABSPATH is null, return SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED. - - Else if REVISION->kind is svn_opt_revision_date or - svn_opt_revision_head, then RA_SESSION is used to retrieve the - revision from the repository (using REVISION->value.date in the - former case), and LOCAL_ABSPATH is ignored. If RA_SESSION is null, - return SVN_ERR_CLIENT_RA_ACCESS_REQUIRED. - - Else if REVISION->kind is svn_opt_revision_unspecified, set - *REVNUM to SVN_INVALID_REVNUM. - - If YOUNGEST_REV is non-NULL, it is an in/out parameter. If - *YOUNGEST_REV is valid, use it as the youngest revision in the - repository (regardless of reality) -- don't bother to lookup the - true value for HEAD, and don't return any value in *REVNUM greater - than *YOUNGEST_REV. If *YOUNGEST_REV is not valid, and a HEAD - lookup is required to populate *REVNUM, then also populate - *YOUNGEST_REV with the result. This is useful for making multiple - serialized calls to this function with a basically static view of - the repository, avoiding race conditions which could occur between - multiple invocations with HEAD lookup requests. - - Else return SVN_ERR_CLIENT_BAD_REVISION. - - Use SCRATCH_POOL for any temporary allocation. */ -svn_error_t * -svn_client__get_revision_number(svn_revnum_t *revnum, - svn_revnum_t *youngest_rev, - svn_wc_context_t *wc_ctx, - const char *local_abspath, - svn_ra_session_t *ra_session, - const svn_opt_revision_t *revision, - apr_pool_t *scratch_pool); - /* Set *ORIGINAL_REPOS_RELPATH and *ORIGINAL_REVISION to the original location that served as the source of the copy from which PATH_OR_URL at REVISION was created, or NULL and SVN_INVALID_REVNUM (respectively) if PATH_OR_URL at Modified: subversion/branches/1.9.x/subversion/svnbench/cl.h URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/svnbench/cl.h?rev=1674003&r1=1674002&r2=1674003&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/svnbench/cl.h (original) +++ subversion/branches/1.9.x/subversion/svnbench/cl.h Thu Apr 16 04:00:47 2015 @@ -80,7 +80,6 @@ typedef struct svn_cl__opt_state_t svn_boolean_t help; /* print usage message */ const char *auth_username; /* auth username */ /* UTF-8! */ const char *auth_password; /* auth password */ /* UTF-8! */ - const char *extensions; /* subprocess extension args */ /* UTF-8! */ apr_array_header_t *targets; /* target list from file */ /* UTF-8! */ svn_boolean_t no_auth_cache; /* do not cache authentication information */ svn_boolean_t stop_on_copy; /* don't cross copies during processing */ @@ -109,6 +108,7 @@ typedef struct svn_cl__cmd_baton_t /* Declare all the command procedures */ svn_opt_subcommand_t svn_cl__help, + svn_cl__null_blame, svn_cl__null_export, svn_cl__null_list, svn_cl__null_log, Copied: subversion/branches/1.9.x/subversion/svnbench/null-blame-cmd.c (from r1673785, subversion/trunk/subversion/svnbench/null-blame-cmd.c) URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/svnbench/null-blame-cmd.c?p2=subversion/branches/1.9.x/subversion/svnbench/null-blame-cmd.c&p1=subversion/trunk/subversion/svnbench/null-blame-cmd.c&r1=1673785&r2=1674003&rev=1674003&view=diff ============================================================================== --- subversion/trunk/subversion/svnbench/null-blame-cmd.c (original) +++ subversion/branches/1.9.x/subversion/svnbench/null-blame-cmd.c Thu Apr 16 04:00:47 2015 @@ -176,7 +176,6 @@ svn_cl__null_blame(apr_getopt_t *os, apr_array_header_t *targets; int i; svn_boolean_t end_revision_unspecified = FALSE; - svn_diff_file_options_t *diff_options = svn_diff_file_options_create(pool); svn_boolean_t seen_nonexistent_target = FALSE; SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os, @@ -214,13 +213,6 @@ svn_cl__null_blame(apr_getopt_t *os, */ iterpool = svn_pool_create(pool); - if (opt_state->extensions) - { - apr_array_header_t *opts; - opts = svn_cstring_split(opt_state->extensions, " \t\n\r", TRUE, pool); - SVN_ERR(svn_diff_file_options_parse(diff_options, opts, pool)); - } - for (i = 0; i < targets->nelts; i++) { svn_error_t *err; Modified: subversion/branches/1.9.x/subversion/svnbench/svnbench.c URL: http://svn.apache.org/viewvc/subversion/branches/1.9.x/subversion/svnbench/svnbench.c?rev=1674003&r1=1674002&r2=1674003&view=diff ============================================================================== --- subversion/branches/1.9.x/subversion/svnbench/svnbench.c (original) +++ subversion/branches/1.9.x/subversion/svnbench/svnbench.c Thu Apr 16 04:00:47 2015 @@ -219,6 +219,26 @@ const svn_opt_subcommand_desc2_t svn_cl_ {0} }, /* This command is also invoked if we see option "--help", "-h" or "-?". */ + { "null-blame", svn_cl__null_blame, {0}, N_ + ("Fetch all versions of a file in a batch.\n" + "usage: null-blame [-rM:N] TARGET[@REV]...\n" + "\n" + " With no revision range (same as -r0:REV), or with '-r M:N' where M < N,\n" + " annotate each line that is present in revision N of the file, with\n" + " the last revision at or before rN that changed or added the line,\n" + " looking back no further than rM.\n" + "\n" + " With a reverse revision range '-r M:N' where M > N,\n" + " annotate each line that is present in revision N of the file, with\n" + " the next revision after rN that changed or deleted the line,\n" + " looking forward no further than rM.\n" + "\n" + " If specified, REV determines in which revision the target is first\n" + " looked up.\n" + "\n" + " Write the annotated result to standard output.\n"), + {'r', 'g'} }, + { "null-export", svn_cl__null_export, {0}, N_ ("Create an unversioned copy of a tree.\n" "usage: null-export [-r REV] URL[@PEGREV]\n" @@ -281,8 +301,7 @@ const svn_opt_subcommand_desc2_t svn_cl_ " follow copy history by default. Use --stop-on-copy to disable this\n" " behavior, which can be useful for determining branchpoints.\n"), {'r', 'q', 'v', 'g', 'c', opt_targets, opt_stop_on_copy, - 'l', opt_with_all_revprops, opt_with_no_revprops, opt_with_revprop, - 'x',}, + 'l', opt_with_all_revprops, opt_with_no_revprops, opt_with_revprop,}, {{opt_with_revprop, N_("retrieve revision property ARG")}, {'c', N_("the change made in revision ARG")}} }, @@ -620,10 +639,6 @@ sub_main(int *exit_code, int argc, const case opt_trust_server_cert_other_failure: opt_state.trust_server_cert_other_failure = TRUE; break; - case 'x': - SVN_ERR(svn_utf_cstring_to_utf8(&opt_state.extensions, - opt_arg, pool)); - break; case opt_config_dir: { const char *path_utf8;