Checkout Tools
  • last updated 1 hour ago
Constraints: committers
Constraints: files
Constraints: dates
Move the command-line client and its tests into "svn" subdirs instead

of "clients/cmdline" subdirs, and patchup multivarious references to

those paths.

* subversion/svn

Moved from subversion/clients/cmdline.

* subversion/tests/svn

Moved from subversion/tests/clients/cmdline.

* subversion/clients,

* subversion/tests/clients



* build.conf,


* www/hacking.html,

* notes/releases.txt,

* subversion/bindings/java/javahl/src/org/tigris/subversion/javahl/tests/,

* subversion/tests/README,

* subversion/tests/svn/xmltests/,

* subversion/tests/svn/xmltests/,

* subversion/tests/svn/README,

* subversion/tests/svn/svntest/,

* subversion/tests/svn/svntest/,

* subversion/tests/svn/,

* subversion/libsvn_ra_dav/log.c,

* build/win32/,

* build/win32/,

* tools/test-scripts/svntest/,

* tools/test-scripts/svntest/mod_dav_svn.conf,

* contrib/client-side/,


* packages/rpm/redhat-7.x/install.patch,

* packages/rpm/redhat-7.x/subversion.spec,

* packages/rpm/redhat-7.x/httpd.davcheck.conf,

* packages/rpm/redhat-8+/install.patch,

* packages/rpm/redhat-8+/subversion.spec,

* packages/rpm/redhat-8+/httpd.davcheck.conf,

* packages/rpm/rhel-3/install.patch,

* packages/rpm/rhel-3/subversion.spec,

* packages/rpm/rhel-3/httpd.davcheck.conf,

* packages/rpm/rhel-4/install.patch,

* packages/rpm/rhel-4/subversion.spec,

* packages/rpm/rhel-4/httpd.davcheck.conf

Update references to the "clients", "clients/cmdline",

"tests/clients", or "tests/clients/cmdline" directories

to point to the correct new location.

### NOTE: Here are some versioned items *NOT* patched up, and the

### reasons I didn't touch them in this commit.

* subversion/po/*

Being PO-ignorant, I dunno if the paths in these files are

magical or not, and didn't want to change files that appear to

be pegged to older versions of Subversion:

"Project-Id-Version: subversion 1.1.0\n"

"POT-Creation-Date: 2005-08-20 02:31+0200\n"

"PO-Revision-Date: 2005-11-30 17:26-0500\n"

* tools/dev/gcov.patch

This patch should be touched for up-to-dateness altogether.

* www/getting_subversion.html

This is a reference to the paths as they appear in tarballs, and

no tarballs have this path change.

* subversion/clients/cmdline/log-cmd.c

This is in a comment with an example of log output. No need to


  1. … 35 more files in changeset.
Change double quotes to single quotes in help messages, for consistency.

* subversion/clients/cmdline/main.c

(svn_cl__options, svn_cl__cmd_table): Change double quotes to single quotes.

* subversion/tests/clients/cmdline/getopt_tests_data/svn_help_log_switch_stdout

Adjust accordingly.

  1. … 1 more file in changeset.
Reformat the source code of help text such that output lines are not split

across source lines. This makes it easier to read and edit, but breaks our

rule of keeping source code lines within 80 columns; an exception seems

worthwhile. The text itself is unchanged.

* subversion/clients/cmdline/main.c (svn_cl__options, svn_cl__cmd_table),

* subversion/svnadmin/main.c (options_table, cmd_table, subcommand_help),

* subversion/svnlook/main.c (options_table, cmd_table),

* subversion/svnversion/main.c (help):

Concatenate adjacent strings. To make more lines fit in 80 columns,

unindent file-scope initialiser blocks (we have no consistency in that

respect), and move some "N_" onto the previous line.

* www/hacking.html

(other-conventions): Mention that exceptions to the 80-column rule can be

made in cases like this.

  1. … 4 more files in changeset.
Fix and improve help text for 'svn propset' and the other prop commands.

Patch by: Alexander Thomas <>


(Corrections by Alex, most other changes by me.)

* subversion/clients/cmdline/main.c

(svn_cl__cmd_table): Modify help text for pdel, pedit, pget, plist, pset:

Make their header lines consistent in style with other commands.

Correct the prop-val syntax for "propset": it's not optional.

Correct the rev-prop syntax: the target doesn't have to be a URL.

Mention that the target for a revprop operation is largely irrelevant.

Use plural "props" in "propget", as in the other commands.

Fix memory leak when diff is given multiple files on the command line.

* subversion/clients/cmdline/diff-cmd.c

(svn_cl__diff): Rename subpool to iterpool.

Pass iterpool to children, instead of pool.

Clear iterpool on both branches.

On argument-parsing errors, don't print help, just an error message.

The errors in question are mainly for too few or too many arguments.

Printing help may be more helpful to a novice in the short term, but in the

long term it gives a false sense of security, causing users to develop a bad

habit (in that not all commands print help when invoked without arguments).

Also, when invoking the command accidentally without arguments (perhaps

giving as an argument an environment variable which was accidentally

undefined), seeing a long help message is annoying. Also it makes a

compatibility problem if we want to extend a command to have an argument-free

form in the future.

* subversion/clients/cmdline/main.c (main):

Don't replace a generic argument-parsing error with help.

* subversion/clients/cmdline/merge-cmd.c (svn_cl__merge):

* subversion/svnadmin/main.c (main):

* subversion/svndumpfilter/main.c (main):

* subversion/svnlook/main.c (main):

Don't augment argument-parsing errors with help. Be more explicit about

whether there are too few or too many arguments, in line with r17336.

  1. … 3 more files in changeset.
Replace some occurrences of SVN_ERR_CL_ARG_PARSING_ERR in favor of


meaning of what we were using ARG_PARSING_ERR for. Also, update the

generic error message to suggest running help.

Patch by: Hyrum K. Wright <>


* subversion/include/svn_error_codes.h

(SVN_ERR_CL_INSUFFICIENT_ARGS): Add suggestion to run 'svn help'.

* subversion/libsvn_subr/opt.c

(svn_opt_parse_num_args): Replace SVN_ERR_CL_ARG_PARSING_ERR in favor


[in subversion/clients/cmdline]

* cleanup-cmd.c

(svn_cl__cleanup): Don't bother checking for no arguments just after

we've ensured there is one.

* copy-cmd.c (svn_cl__copy):

* export-cmd.c (svn_cl__export):

* move-cmd.c (svn_cl__move):

Split the conditional checking for arguments and replace


This is consistent with svn_cl__import.

* add-cmd.c (svn_cl__add),

blame-cmd.c (svn_cl__blame),

cat-cmd.c (svn_cl__cat),

checkout-cmd.c (svn_cl__checkout),

delete-cmd.c (svn_cl__delete),

import-cmd.c (svn_cl__import),

lock-cmd.c (svn_cl__lock),

merge-cmd.c (svn_cl__merge),

mkdir-cmd.c (svn_cl__mkdir),

resolved-cmd.c (svn_cl__resolved),

revert-cmd.c (svn_cl__revert),

switch-cmd.c (rewrite_urls, svn_cl__switch),

unlock-cmd.c (svn_cl__unlock): Replace SVN_ERR_CL_ARG_PARSING_ERR in


  1. … 4 more files in changeset.
Add whitespace to warning messages in post-commit hooks, for the sake

of better readability.

* subversion/clients/cmdline/util.c

(svn_cl__print_commit_info): Add whitespace.

* subversion/tests/clients/cmdline/

(post_commit_hook_test): Update expected output.

  1. … 1 more file in changeset.
In the help for "svn move", note that "-r" has no use and is deprecated.

* subversion/clients/cmdline/main.c

(svn_cl__cmd_table): Add that note.

Rearrange the search for an editor command for clarity and efficiency.

No functional change.

* subversion/clients/cmdline/util.c

(svn_cl__edit_externally): If we're going to use the editor we're given,

don't bother finding out what we would otherwise have used.

Tidy some comments in XML schema files.

* subversion/clients/cmdline/schema/blame.rnc

* subversion/clients/cmdline/schema/common.rnc

* subversion/clients/cmdline/schema/list.rnc

* subversion/clients/cmdline/schema/log.rnc

* subversion/clients/cmdline/schema/status.rnc

Fix typos, consistency and spacing.

Replace calls to the deprecated functions svn_wc_create_tmp_file and

svn_io_open_unique_file with their ...2() successors.

  1. … 25 more files in changeset.
Partial fix for Issue #443: post-commit hook script (error) output lost

This is step 6 : Pass the post-commit error from the server to the client

over all three protocols.

Patch by: Madan U Sreenivasan <>

* subversion/libsvn_subr/constructors.c

(svn_commit_info_dup): Modified to copy the post_commit_err member.

* subversion/mod_dav_svn/merge.c

(global): included svn_xml.h.

(dav_svn__merge_response): Modified to use the new post-commit

error message parameter.

* subversion/mod_dav_svn/dav_svn.h

(dav_svn__merge_response): Add new parameter - post_commit_err.

* subversion/mod_dav_svn/version.c

(dav_svn_merge): Modified to extract the post-commit error message.

* subversion/clients/cmdline/util.c

(svn_cl__print_commit_info): At last, we can print out the post-commit

error messages! yoohoo!

* subversion/tests/clients/cmdline/

(post_commit_hook_test): New function to test post-commit hook's error


(test_list): Added post_commit_hook_test to list of tests.

* subversion/libsvn_repos/hooks.c

(svn_repos__hooks_post_commit): Pass TRUE for the read_errstream

parameter of run_hook_cmd.

* subversion/libsvn_repos/commit.c

(close_edit): Fill the post_commit_err parameter if the child

error message has one.

* subversion/libsvn_ra_svn/client.c

(ra_svn_end_commit): Modified to read the extra post-commit error

message sent out by the server.

* subversion/libsvn_ra_svn/protocol

(commit_info): Added the optional parameter for post-commit error.

* subversion/libsvn_ra_dav/merge.c

(merge_elements): Added new member for post-commit error processing.

(merge_ctx_t): Added new member for post-commit error.

(validate_element): Added test for the ELEM_post_commit_err.

(end_element): Added post-commit error handling.

(svn_ra_dav__merge_activity): Added the post_commit_err parameter

and its handling.

* subversion/libsvn_ra_dav/ra_dav.h

(enum): Added a new member ELEM_post_commit_err.

(svn_ra_dav__merge_activity): Added new parameter for post-commit error


* subversion/libsvn_ra_dav/commit.c

(commit_close_edit): Modified call to svn_ra_dav__merge_activity to

pass the post-commit error message.

* subversion/svnserve/serve.c

(commit_callback_baton_t): Add a new member to hold the post-commit

error message.

(commit_done): Modified to copy the over the post-commit error message

to the callback baton.

(commit): Write out the tuple with the post-commit error message.

  1. … 13 more files in changeset.
Move the command line client's auth baton setup into libsvn_subr so it

can be reused by other applications.

* subversion/include/svn_cmdline.h

(svn_cmdline_setup_auth_baton): New function prototype.

* subversion/libsvn_subr/cmdline.c

(svn_cmdline_setup_auth_baton): New function, holds the logic that

used to live in the command line client.

* subversion/clients/cmdline/main.c

(main): Use svn_cmdline_setup_auth_baton to set up our auth baton.

  1. … 2 more files in changeset.
Fix cancellation support, which I recently broke when I moved the prompt

code into libsvn_subr.

* subversion/clients/cmdline/main.c

(main): Use the right cancellation function when building our prompt

baton, ctx->cancel_func isn't actually initialized at that point.

Oops, missed this one in revision 17182.

* subversion/clients/cmdline/main.c

(main): Use the version of the windows auth provider from libsvn_subr,

not libsvn_client.

Move the auth provider code from libsvn_client to libsvn_subr, it doesn't

actually depend on anything in libsvn_client, and there's no reason to tie

use of this code to use of the client library. It's perfectly reasonable,

for example, to need an auth baton for use of libsvn_ra.

This is another step in abstracting the command line client's auth setup

code out into a library so that other programs can use it.

* subversion/include/svn_client.h











svn_client_get_ssl_client_cert_pw_prompt_provider): Deprecate.

* subversion/include/svn_auth.h











svn_auth_get_ssl_client_cert_pw_prompt_provider): New prototypes.

* subversion/libsvn_client/ssl_client_cert_pw_providers.c: Rename to...

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c: This. Also...

(svn_client_get_ssl_client_cert_pw_file_provider): Rename to...

(svn_auth_get_ssl_client_cert_pw_file_providers): This.

(svn_client_get_ssl_client_cert_pw_prompt_provider): Rename to...

(svn_auth_get_ssl_client_cert_pw_prompt_provider): This.

* subversion/libsvn_client/ssl_client_cert_providers.c: Rename to...

* subversion/libsvn_subr/ssl_client_cert_providers.c: This. Also...

(svn_client_get_ssl_client_cert_file_provider): Rename to...

(svn_auth_get_ssl_client_cert_file_provider): This.

(svn_client_get_ssl_client_cert_prompt_provider): Rename to...

(svn_auth_get_ssl_client_cert_prompt_provider): This.

* subversion/libsvn_client/username_providers.c: Rename to...

* subversion/libsvn_subr/username_providers.c: This. Also...

(svn_client_get_username_provider): Rename to...

(svn_auth_get_username_provider): This.

(svn_client_get_username_prompt_provider): Rename to...

(svn_auth_get_username_provider): This.

* subversion/libsvn_client/ssl_server_trust_providers.c: Rename to...

* subversion/libsvn_subr/ssl_server_trust_providers.c: This. Also...






ssl_server_trust_file_save_credentials): Update use of changed


(svn_client_get_ssl_server_trust_file_provider): Rename to...

(svn_auth_get_ssl_server_trust_file_provider): This.

(svn_client_get_ssl_server_trust_prompt_provider): Rename to...

(svn_auth_get_ssl_server_trust_prompt_provider): This.

* subversion/libsvn_client/simple_providers.c: Rename to...

* subversion/libsvn_subr/simple_providers.c: This. Also...













windows_simple_save_creds): Update use of changed constants.

(svn_client_get_simple_provider): Rename to...

(svn_auth_get_simple_provider): This. Also, update use of changed


(svn_client_get_simple_prompt_provider): Rename to...

(svn_auth_get_simple_prompt_provider): This. Also, update use of

changed constants.

(svn_client_get_windows_simple_provider): Rename to...

(svn_auth_get_windows_simple_provider): This.

* subversion/libsvn_client/compat_providers.c: New file, holds compat

wrappers for functions that have been moved to libsvn_subr.

* subversion/clients/cmdline/main.c

(main): update calls to renamed provider functions.

  1. … 13 more files in changeset.
Move the command line client's prompting code into libsvn_subr, so that

it can be reused by other client programs. This is a precursor to moving

the code that sets up auth batons there, so that multiple clients can

have the same behavior with regard to auth without copying large amounts

of code.

* subversion/include/svn_cmdline.h





svn_cmdline_auth_ssl_client_cert_prompt): New prototypes, formerly

located in the command line client.

(svn_cmdline_prompt_baton_t): New baton, holds cancellation function

and baton for the prompting functions.

* subversion/clients/cmdline/prompt.c: Move to...

* subversion/libsvn_subr/prompt.c: Here, with the following changes.

(prompt): take a svn_cmdline_prompt_baton_t, not a svn_client_ctx_t.

(svn_cl__auth_simple_prompt): Rename to...

(svn_cmdline_auth_simple_prompt): This. Also use a prompt baton, not

a client context.

(svn_cl__auth_username_prompt): Rename to...

(svn_cmdline_auth_username_prompt): This. Also use a prompt baton,

not a client context.

(svn_cl__auth_ssl_server_trust_prompt): Rename to...

(svn_cmdline_auth_ssl_server_trust_prompt): This. Also use a prompt

baton, not a client context.

(svn_cl__auth_ssl_client_cert_prompt): Rename to...

(svn_cmdline_auth_ssl_client_cert_prompt): This. Also use a prompt

baton, not a client context.

(svn_cl__auth_ssl_client_cert_pw_prompt): Rename to...

(svn_cmdline_auth_ssl_client_cert_pw_prompt): This. Also use a prompt

baton, not a client context.

(svn_cl__prompt_user): Rename to...

(svn_cmdline_prompt_user): This. Also use a prompt baton, not a

client context.

* subversion/clients/cmdline/cl.h






svn_cl__auth_ssl_client_cert_pw_prompt): removed.

* subversion/clients/cmdline/util.c

(svn_cl__get_log_message): adjust for moving of prompt functions.

* subversion/clients/cmdline/main.c

(main): ditto.

  1. … 2 more files in changeset.
Consistently refer to revision number ranges as "N:M", not "M:N".

* subversion/clients/cmdline/diff-cmd.c (svn_cl__diff),

* subversion/clients/cmdline/main.c (main),

* subversion/svnadmin/main.c (main):

Write "-r N:M" instead of "-r M:N".

  1. … 1 more file in changeset.
Make '-c' reject a negative argument, and make minor improvements

to help and error messages, as a follow-up to r17054.

Speed up non-verbose 'svn list' commands by a scary amount by allowing

the server to avoid calculating parts of the svn_dirent_t objects that

are never used.

* subversion/libsvn_ra/wrapper_template.h

(compat_get_dir): Update for new version of get_dir, pass SVN_DIRENT_ALL

for the dirent_flags parameter.

* subversion/libsvn_ra/ra_loader.c

(svn_ra_get_dir): Ditto.

(svn_ra_get_dir2): New wrapper function.

* subversion/libsvn_ra/ra_loader.h

(svn_ra__vtable_t): Add a dirent_fields parameter to the get_dir function.

* subversion/include/svn_ra_svn.h






SVN_RA_SVN_DIRENT_LAST_AUTHOR): Constants to represent dirent bitfield

values on the wire.

* subversion/include/svn_types.h






SVN_DIRENT_LAST_AUTHOR): New bitfield values for each field in a dirent.

(SVN_DIRENT_ALL): Combination of all the other bitfield values.

* subversion/include/svn_client.h

(svn_client_ls4): New function, like svn_client_ls3, but with a dirent

fields parameter.

(svn_client_ls3): Deprecated in favor of svn_client_ls4.

* subversion/include/svn_ra.h

(svn_ra_get_dir2): New version of svn_ra_get_dir, takes a dirent fields


(svn_ra_get_dir): Deprecate in favor of svn_ra_get_dir2.

* subversion/libsvn_ra_local/ra_plugin.c

(svn_ra_local__get_dir): Add dirent_fields parameter and use it to

determine which parts of the dirents we need to fill in.

* subversion/libsvn_client/ls.c

(get_dir_contents): Add a dirent_fields parameter, use svn_ra_get_dir2,

update recursive call.

(svn_client_ls4): New list function, adds a dirent_fields parameter which

is passed to get_dir_contents.

(svn_client_ls3): Backwards compat wrapper, calls svn_client_ls4 with the

dirent_fields set to SVN_DIRENT_ALL.

* subversion/clients/cmdline/ls-cmd.c

(svn_cl__ls): Use svn_client_ls4, only asking for the dirent fields we

actually need.

* subversion/libsvn_ra_svn/client.c

(ra_svn_get_dir): Take a dirent_fields parameter and pass it along via an

optional new parameter to the get-dir command that holds a list of

strings representing each field.

* subversion/libsvn_ra_svn/protocol

(get-dir): Update for new dirent fields list.

* subversion/libsvn_ra_dav/ra_dav.h

(svn_ra_dav__get_dir): Add dirent_fields parameter.

* subversion/libsvn_ra_dav/fetch.c

(svn_ra_dav__get_dir): Add dirent_fields parameter and try to limit the

number of properties we ask the server to send back based on it.

* subversion/svnserve/serve.c

(get_dir): Parse new dirent_fields list from the get-dir command and

only fill in the portions of the dirents that the user actually asked


  1. … 14 more files in changeset.
* subversion/clients/cmdline/main.c

(main): Fix typos. Followup to r17054.

Add a -c option to merge and diff that represents change number.

* subversion/clients/cmdline/main.c

(svn_cl__options): Add 'c'/'change' option.

(svn_cl__cmd_table): Merge and diff can take 'c' argument.

(main): Handle parsing for 'c'.

* subversion/tests/client/cmdline/

(diff_pure_repository_update_a_file): Modify test

to also use -c shorthand.

* subversion/tests/client/cmdline/

(merge_one_file_with_c): New test: a copy of merge_one_file

that uses -c to merge changes.

(test_list): Add the new test.

  1. … 2 more files in changeset.
Silence compiler warning.

* subversion/clients/cmdline/util.c (svn_cl__edit_externally): Add

'const' modifier.

Fix issue 767: Commit uses temporary file in current directory.

* subversion/clients/cmdline/util.c (svn_cl__edit_externally): After trying

the current scheme, open the commit message file in a temp dir.

* subversion/clients/cmdline/dtd: Remove. The DTDs can be generated

by the RELAX NG schemas added in r16379.

Activate some Windows-specific behaviour on Cygwin too:


- Windows-specific augmented file:// URLs

* subversion/libsvn_ra_local/split_url.c (svn_ra_local__split_URL):

Activate Windows-specific augmented file:// URL parsing on Cygwin too.

Make an implicit loss of const into an explicit cast to silence warning.

* subversion/svnversion/main.c (main):

* subversion/clients/cmdline/main.c (main):

* subversion/tests/clients/cmdline/svntest/ (get_admin_name):

Enable SVN_ASP_DOT_NET_HACK on Cygwin.

  1. … 3 more files in changeset.
Add support for creating XML schemas in various formats for the command-line

client output to the UNIX build system.

NOTE: Currently, the configure script only checks for trang (the schema

conversion tool) as an executable, and not as a Java class run by the Java

interpreter. We might find a way to extend this checking if we desire, but

in the mean time, the --with-trang configure option can be used.

* Check for the trang tool, and add a new option --with-trang.


(SCHEMA_DIR, TRANG): New variables.

(mkdir-init): Ensure that the schema dir is created.


(schema, schema-rng, schema-dtd, schema-xsd, schema-clean): New rules.

(.SUFFIXES): Add new schema file extensions.

(.rnc.rng, .rnc.dtd, .rnc.xsd): New implicit rules.

* subversion/clients/cmdline/schema: Set svn:ignore property to ignore

generated RNG, DTD and XSD files.

  1. … 2 more files in changeset.
[In subversion/clients/cmdline/schema/]

* blame.rnc,

* log.rnc,

* status.rnc,

* common.rnc,

* info.rnc,

* list.rnc: Set svn:eol-style to native.

Add RELAX NG schemas for the command-line client XML output.

NOTE: These files can be used to generate XML 1.0 DTDs, W3C XML Schema

and RELAX NG XML syntax. Improving the build system to do this automatically

will be done in a later commit.

[in subversion/clients/cmdline/]

* schema: New directory for schema files.

* schema/blame.rnc,

* schema/log.rnc,

* schema/status.rnc,

* schema/common.rnc,

* schema/info.rnc,

* schema/list.rnc:

New files.