Checkout Tools
  • last updated 2 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Move (some of the) standalone types into separate implementation headers

so that SVN++ can use them directly without exposing APR or other dependencies.

* subversion/include/svn_opt_impl.h: New file.

(svn_opt_revision_kind): Moved here from svn_opt.h

* subversion/include/svn_opt.h: Include svn_opt_impl.h.

(svn_opt_revision_kind): Moved away.

* subversion/include/svn_types_impl.h: New file.

(svn_error_t): Forward declaration.

(svn_node_kind_t, svn_tristate_t,

svn_revnum_t, SVN_INVALID_REVNUM, svn_depth_t): Moved here from svn_types.h.

* subversion/include/svn_types.h: Include svn_types_impl.h.

(svn_node_kind_t, svn_tristate_t,

svn_revnum_t, SVN_INVALID_REVNUM, svn_depth_t): Moved away.

[in subversion/bindings/cxx]

* include/svnxx/depth.hpp: Include svn_types_impl.h.

(depth): Define enum constant values from svn_depth_t.

* include/svnxx/exception.hpp: Include svn_types_impl.h.

(detail::svn_error): Remove forward declaration.

(detail::error_ptr): Use svn_error_t directly.

* include/svnxx/revision.hpp: Include svn_opt_impl.h and svn_types_impl.h.

(revision::number): Use svn_revnum_t for the underlying type and

SVN_INVALID_REVNUM for the 'invalid' enum constant value.

(revision::kind): Define enum constant values from svn_opt_revision_kind.

* include/svnxx/tristate.hpp: Include svn_types_impl.h.

(tristate::value): Define enum constant values from svn_tristate_t.

* src/exception.cpp

(detail::svn_error): Removed.

(impl::checked_call): Use svn_error_t instead of detail::svn_error.

  1. … 8 more files in changeset.
Doxygen mark-up fixes.
  1. … 8 more files in changeset.
Deprecate the previous version of the command-line help text API, following


* subversion/include/svn_opt.h


* subversion/libsvn_subr/opt.c

Move deprecated functions and their helpers (and copy one of them)...

* subversion/libsvn_subr/deprecated.c

... to here.

* subversion/svnmucc/svnmucc.c,







Bump remaining calls to svn_opt_print_help4() to svn_opt_print_help5().

  1. … 9 more files in changeset.
* subversion/include/svn_opt.h

(SVN_OPT_MAX_PARAGRAPHS): Document as "New in 1.11".

* subversion/include/svn_opt.h

(SVN_OPT_MAX_PARAGRAPHS): Increase from 50 to 100 to be able to

accommodate the curent 'svn help' text.

Allow splitting long help strings into paragraphs to ease translation.

Issue SVN-4724.

Some of the tools our translators use do not handle very long (multi-

paragraph) strings well, just showing the whole string has changed. The

recommended solution is to split long strings at paragraph boundaries in the

source code.

This patch revises svn_opt_subcommand_desc2_t into svn_opt_subcommand_desc3_t

supporting an array of strings instead of a single string for the main help

text, and revises all the supporting functions accordingly.

This patch does not split each long string into paragrpahs, it only adds the

mechanism for doing so.

* subversion/include/svn_opt.h,









svn_opt_print_help5): New.

  1. … 1 more file in changeset.
Fix #include guards and Doxygen mark-up that does not match a file's actual


Found by grepping:

grep "@file" subversion/*/*.* subversion/*/*/*.* subversion/*/*/*/*.* |

grep -vi "/\([^:/]\+\): \* @file \1"

grep "\(ifndef\|define\|endif\) \+.*_H\>" subversion/include/*.h \

subversion/include/*/*.h |

grep -vi "/\([^:/.]\+\).h:\#\(ifndef\|define\|endif.*\) \1_H"

* subversion/include/private/svn_dep_compat.h,



Correct the @file filename.

* subversion/include/svn_opt.h

Correct the #include guards.

  1. … 3 more files in changeset.
Annotate doc strings following r1635118.

* subversion/include/svn_client.h

(svn_client_args_to_target_array2): Tweak to mention the release version

as well as the revision number of the original change in v1.6.5.

(svn_client_args_to_target_array): Document the change made in v1.6.5.

* subversion/include/svn_opt.h

(svn_opt_parse_all_args): Document the change made in r1635118 and also

the change made in v1.6.5.

  1. … 1 more file in changeset.
Expand "svn --version" output with information about the running system

when --verbose is also given on the command line. Currently available:

- Minimal running system info on systems with uname().

- System info and commercial release name on Windows.

* build.conf (libsvn_subr): Require kernel32.lib on Windows.

* Check for uname() in sys/utsname.h.

* subversion/include/svn_opt.h (svn_opt_print_help4): New, with verbose option.

(svn_opt_print_help3): Deprecate.

* subversion/libsvn_subr/sysinfo.c, subversion/libsvn_subr/sysinfo.h: New.

* subversion/libsvn_subr/opt.h (svn_opt__print_version_info): Add "verbose".

* subversion/libsvn_subr/opt.c: Include sysinfo.h.

(svn_opt__print_version_info): In verbose mode, print svn_sysinfo__*.

(svn_opt_print_help4): Implement.

(svn_opt_print_help3): Remove.

* subversion/libsvn_subr/deprecated.c

(svn_opt_print_help3, svn_opt_print_help3): Reimplenment in terms of


(svn_opt_print_help): Update call to svn_opt__print_version_info.

* subversion/svn/main.c: Add --verbose option to "svn --version".

* subversion/svnlook/main.c: Add --verbose option to "svn --version".

Use svn_opt_print_help4 instead of svn_opt_print_help3.

* subversion/svn/help-cmd.c, subversion/svnadmin/main.c,

subversion/svndumpfilter/main.c, subversion/svnmucc/svnmucc.c,

subversion/svnrdump/svnrdump.c, subversion/svnserve/main.c,

subversion/svnsync/main.c, subversion/svnversion/main.c,



Use svn_opt_print_help4 instead of svn_opt_print_help3.

  1. … 19 more files in changeset.
Correct some peg-revision-parsing documentation and update the tests to

include all the documented examples.

* subversion/include/svn_opt.h

(svn_opt_parse_path): Correct the documented result in three of the


* subversion/tests/libsvn_subr/opt-test.c

(test_parse_peg_rev): Add the remaining five documented examples as test

cases, including two of the three that were wrongly documented. Also, in

the cases where an error is expected, write '-1' instead of

'svn_opt_revision_unspecified' in the 'expected revision' column to show

more clearly that this column is not relevant.

  1. … 1 more file in changeset.
Fix Doxygen mark-up related to the use of '@a' to refer to an argument.

  1. … 12 more files in changeset.
Fix cross-references, Doxygen mark-up and other simple errors in doc strings.

* subversion/include/svn_client.h

(svn_client_commit_item_create): Fix white space around 'SVN_DEPRECATED'.

(svn_client_add4): Correct a cross-reference. Fix Doxygen mark-up.

(svn_client_mkdir3, svn_client_delete3, svn_client_import3,

svn_client_copy5, svn_client_move5, svn_client_propset3): Tweak wording.

(svn_client_commit4): Tweak wording. Fix Doxygen mark-up.

(svn_client_status_t): Correct a cross-reference. Fix grammar.

(svn_client_lock): Correct a cross-reference. Fix Doxygen mark-up.

* subversion/include/svn_opt.h

(svn_opt_parse_path): Fix Doxygen mark-up to display a list.

* subversion/include/svn_props.h

(svn_prop_get_value): Fix Doxygen mark-up.

* subversion/include/svn_repos.h

(svn_repos_notify_t, svn_repos_notify_func_t): Fix Doxygen mark-up.

* subversion/include/svn_string.h

Add a missing Doxygen end-of-group tag. Remove redundant comments that

repeated the Doxygen group comments.

* subversion/include/svn_version.h

(svn_version_t): Remove a spurious backslash character.

* subversion/include/svn_wc.h

(svn_wc_mark_missing_deleted, svn_wc_delete4): Fix Doxygen mark-up.

* subversion/include/svn_xml.h

(svn_xml_make_header): Fix Doxygen mark-up.

* subversion/include/private/svn_wc_private.h

(svn_wc__min_max_revisions): Fix Doxygen mark-up.

  1. … 8 more files in changeset.
Print the aliases for command-line long options automatically instead of


This adds new optional behaviour to svn_opt_subcommand_help3(). I think

this is backward compatible, but if that is disputed we can rev the API.

* subversion/libsvn_subr/opt.c

(get_option_from_code): New function.

(format_option): New function, extracted from svn_opt_format_option(),

enhanced to print a long option alias as well.

(svn_opt_format_option): Rewrite as a wrapper around format_option().

(print_command_info2): Use get_option_from_code() and format_option() so

as to print the long option aliases if defined in the options table.

* subversion/svn/main.c

(svn_cl__options): Remove the hand-written mentions of long option aliases.

* subversion/include/svn_opt.h

(svn_opt_subcommand_help3): Mention this in the doc string.

  1. … 2 more files in changeset.
Remove svn_opt_eat_peg_revisions() from the public API name space, making it

a private function in the 'svn' client, named accordingly. It was

introduced in 1.6.x with a private double-underscore name and has not yet

gone public in 1.7, so we can do this.

The idea of introducing and using this function was to allow arguments that

do not take a peg revision to nevertheless be written with peg revision

syntax (i.e. a trailing "@" sign can be given to "escape" any preceding "@"

sign. However, this particular API is not a good one to make public because

the caller is unable to detect if an inappropriate peg specifier was given.

* subversion/include/svn_opt.h

(svn_opt_eat_peg_revisions): Move and rename to ...

* subversionsvn/cl.h

(svn_cl__eat_peg_revisions) ... here.

* subversion/libsvn_subr/opt.c

(svn_opt__eat_peg_revisions): Remove this wrapper, as compatibility for

1.6 for svn executable is not required.

(svn_opt_eat_peg_revisions): ... move and rename to ...

* subversion/svn/util.c

(svn_cl__eat_peg_revisions) ... here.

* subversion/svn/add-cmd.c

* subversion/svn/changelist-cmd.c

* subversion/svn/cleanup-cmd.c

* subversion/svn/commit-cmd.c

* subversion/svn/copy-cmd.c

* subversion/svn/delete-cmd.c

* subversion/svn/lock-cmd.c

* subversion/svn/mkdir-cmd.c

* subversion/svn/move-cmd.c

* subversion/svn/patch-cmd.c

* subversion/svn/propdel-cmd.c

* subversion/svn/propedit-cmd.c

* subversion/svn/propset-cmd.c

* subversion/svn/resolve-cmd.c

* subversion/svn/resolved-cmd.c

* subversion/svn/revert-cmd.c

* subversion/svn/status-cmd.c

* subversion/svn/unlock-cmd.c

* subversion/svn/update-cmd.c

* subversion/svn/upgrade-cmd.c

Adjust callers.

  1. … 23 more files in changeset.
Add "const" to all "apr_array_header_t *" input parameters in public and

private APIs.

(Note that we are allowed to add "const" to a pointer parameter of a public

API, and have done so before, because that is a backward-compatible API

change and doesn't change the ABI at all.)

The public functions whose prototypes are changed are listed individually

below; the private functions are not.

* subversion/include/svn_auth.h


* subversion/include/svn_client.h






* subversion/include/svn_delta.h




* subversion/include/svn_fs.h


* subversion/include/svn_mergeinfo.h








* subversion/include/svn_opt.h





* subversion/include/svn_ra.h




* subversion/include/svn_ra_svn.h





* subversion/include/svn_repos.h






* subversion/include/svn_sorts.h


* subversion/include/svn_string.h


* subversion/include/svn_wc.h







* subversion/include/private/svn_cmdline_private.h

* subversion/include/private/svn_opt_private.h

* subversion/libsvn_client/blame.c

* subversion/libsvn_client/client.h

* subversion/libsvn_client/commit.c

* subversion/libsvn_client/commit_util.c

* subversion/libsvn_client/copy.c

* subversion/libsvn_client/deprecated.c

* subversion/libsvn_client/merge.c

* subversion/libsvn_client/mergeinfo.c

* subversion/libsvn_client/mergeinfo.h

* subversion/libsvn_client/patch.c

* subversion/libsvn_client/ra.c

* subversion/libsvn_delta/compat.c

* subversion/libsvn_delta/path_driver.c

* subversion/libsvn_fs_base/reps-strings.c

* subversion/libsvn_fs_base/revs-txns.c

* subversion/libsvn_fs_base/revs-txns.h

* subversion/libsvn_fs_fs/fs_fs.c

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs/fs-loader.c

* subversion/libsvn_fs/fs-loader.h

* subversion/libsvn_ra/compat.c

* subversion/libsvn_ra/ra_loader.c

* subversion/libsvn_ra/ra_loader.h

* subversion/libsvn_ra/wrapper_template.h

* subversion/libsvn_ra_local/ra_plugin.c

* subversion/libsvn_ra_neon/get_locations.c

* subversion/libsvn_ra_neon/props.c

* subversion/libsvn_ra_neon/ra_neon.h

* subversion/libsvn_ra_serf/getlocations.c

* subversion/libsvn_ra_serf/ra_serf.h

* subversion/libsvn_ra_svn/client.c

* subversion/libsvn_ra_svn/cyrus_auth.c

* subversion/libsvn_ra_svn/editorp.c

* subversion/libsvn_ra_svn/internal_auth.c

* subversion/libsvn_ra_svn/marshal.c

* subversion/libsvn_ra_svn/ra_svn.h

* subversion/libsvn_repos/fs-wrap.c

* subversion/libsvn_repos/log.c

* subversion/libsvn_repos/repos.c

* subversion/libsvn_repos/repos.h

* subversion/libsvn_repos/rev_hunt.c

* subversion/libsvn_subr/auth.c

* subversion/libsvn_subr/cmdline.c

* subversion/libsvn_subr/deprecated.c

* subversion/libsvn_subr/mergeinfo.c

* subversion/libsvn_subr/opt.c

* subversion/libsvn_subr/sorts.c

* subversion/libsvn_subr/svn_string.c

* subversion/libsvn_wc/adm_ops.c

* subversion/libsvn_wc/deprecated.c

* subversion/libsvn_wc/diff.c

* subversion/libsvn_wc/status.c

* subversion/libsvn_wc/update_editor.c

* subversion/libsvn_wc/util.c

* subversion/mod_dav_svn/dav_svn.h

* subversion/mod_dav_svn/reports/file-revs.c

* subversion/mod_dav_svn/util.c

* subversion/svn/cl.h

* subversion/svn/props.c

* subversion/svn/switch-cmd.c

* subversion/svn/util.c

* subversion/svndumpfilter/main.c

* subversion/svnserve/serve.c

* subversion/tests/libsvn_repos/repos-test.c

* subversion/tests/libsvn_subr/mergeinfo-test.c

  1. … 78 more files in changeset.
Test out my new and fancy ASF commit priviledges by changing the copyright

wording in our license headers to reflect ownership by the ASF.


Change terminology to ASF, and update a link.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the ASF, and update the project website.

* everywhere:

Change license text to reflect ASF ownership.

  1. … 891 more files in changeset.
Fix some outdated stylistic conventions. Whitespace should not occur

before a open-parentheses that is part of a function definition,

declaration, or type definition. In all these cases, shift the open-paren

up one line to the func/type name.

No functional change.

* subversion/include/svn_delta.h:

* subversion/include/svn_types.h:

* subversion/include/svn_wc.h:

* subversion/include/svn_cmdline.h:

* subversion/include/svn_client.h:

* subversion/include/svn_auth.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_ra.h:

(): adjust declarations to avoid whitespace before func paren.

Found by: blair

  1. … 7 more files in changeset.
Make svn_opt_revision_to_string() a truly private function by not declaring

it in a public header. Also make it not conditional upon SVN_DEBUG.

* subversion/include/svn_opt.h

(svn_opt_revision_to_string): Move to...

* subversion/include/private/svn_opt_private.h

(svn_opt__revision_to_string): Here, and rename.

* subversion/libsvn_subr/opt.c

(svn_opt_revision_to_string): Rename to...

(svn_opt__revision_to_string): this.

  1. … 2 more files in changeset.
Add a new API for stringifying an svn_opt_revision_t.

By requests on IRC, the API is enabled only in maintainer mode builds.

* subversion/include/svn_opt.h

(svn_opt_revision_to_string): New declaration.


Remind to extend the new function when extending this enum.

* subversion/libsvn_subr/opt.c

(svn_opt_revision_to_string): New implementation.

  1. … 1 more file in changeset.
Relicense Subversion under the Apache License, Version 2.0.

* NOTICE: New.



subversion/LICENSE: Remove.

* subversion/libsvn_subr/opt.c

(svn_opt__print_version_info): Note that the product as a whole is

copyrighted by the SVN Corp, and that it contains contributions from

many people, as referenced in NOTICE.

* subversion/bindings/swig/python/LICENSE_FOR_PYTHON_BINDINGS:

Relicense the SVN parts under Apache 2.0.

* everywhere:

Change copyright notices in file headers to reflect the Apache 2.0 license.

  1. … 882 more files in changeset.
* subversion/include/svn_opt.h

(svn_opt_eat_peg_revisions): Add @since marker.

Found by: rhuijben

Fix issue #3416, "Cannot add or commit 'dir/@file.txt'".

Make every subcommand parse peg revisions which previously didn't

parse them. The Book documents this behaviour as follows:

After all, how does svn know whether news@11 is the name of a

directory in my tree or just a syntax for “revision 11 of news”?

Thankfully, while svn will always assume the latter, [...]

Regrettably, svn didn't always assume the latter.

We only ever parsed peg revisions for commands where they make sense.

Escaping '@' characters in filenames was impossible for subcommands

which didn't parse peg revisions. Subversion would always interpret

'abc@abc' as a complete filename for those commands, instead of

as the nonsense 'revision abc of abc' it is.

Even our unit tests didn't agree with The Book, and were merrily

adding and committing 'abc@abc' without escaping.

To add insult to injury, when splitting peg revisions from target

paths we never ensured that the target path still had a non-zero

length after the split. The code then went on to form a canonicalised

target path with attached peg revision by canonicalising the empty

path and then concatenating the empty canonicalisation result and

the peg revision.

This led to confusing behaviour were 'svn add @file' ('@file' is an

actual filename) was accidentally working, but 'svn add @file@' was

not -- it resulted in "svn add: Warning: '@file@' not found"

In the former situation we now throw an error, because as far as svn

can tell only a peg revision was specified, but no target path.

'svn add @file@' is the correct way to add a file called @file, and

because 'svn add' will now parse and discard the peg revision specifier,

this now works.

This problem didn't just affect add, but every subcommand which

didn't interpret peg revisions (commit, lock, etc.)

* subversion/libsvn_subr/opt.c

(svn_opt__split_arg_at_peg_revision): Require target path to have

a non-zero length after splitting a peg revision from it.

Allow callers to pass NULL for the parsed peg revision, so they can

easily discard the parsed peg revision if they don't need it.

(svn_opt_eat_peg_revisions): New function. Returns a copy of a list

of targets with all peg revision specifiers removed.

* subversion/tests/cmdline/

(basic_peg_revision): Consistently escape '@' characters in filenames,

and check for regression into issue #3416.

* subversion/svn/patch-cmd.c, subversion/svn/propdel-cmd.c,

subversion/svn/mkdir-cmd.c, subversion/svn/move-cmd.c,

subversion/svn/revert-cmd.c, subversion/svn/changelist-cmd.c,

subversion/svn/update-cmd.c, subversion/svn/resolved-cmd.c,

subversion/svn/upgrade-cmd.c, subversion/svn/cleanup-cmd.c,

subversion/svn/commit-cmd.c, subversion/svn/add-cmd.c,

subversion/svn/propset-cmd.c, subversion/svn/delete-cmd.c,

subversion/svn/resolve-cmd.c, subversion/svn/status-cmd.c,

subversion/svn/propedit-cmd.c, subversion/svn/lock-cmd.c,


(svn_cl__patch, svn_cl__propdel, svn_cl__mkdir, svn_cl__move,

svn_cl__revert, svn_cl__changelist, svn_cl__update, svn_cl__resolved,

svn_cl__upgrade, svn_cl__cleanup, svn_cl__commit, svn_cl__add,

svn_cl__propset, svn_cl__delete, svn_cl__resolve, svn_cl__status,

svn_cl__propedit, svn_cl__lock, svn_cl__unlock): Remove peg revision

specifiers from all targets before passing them to the client library,

using the new function svn_opt_eat_peg_revisions().

* subversion/include/private/svn_opt_private.h

(svn_opt__split_arg_at_peg_revision): Document changes in behaviour

described above (see entry for subversion/libsvn_subr/opt.c).

* subversion/include/svn_opt.h

(svn_opt_parse_path): Document a few additional examples of how peg

revisions are parsed, all pertaining to issue #3416.

(svn_opt_eat_peg_revisions): Declare.

  1. … 22 more files in changeset.
Adjust a bunch of our public header files:

- make sure everything the header needs is included

- make sure nothing is included which is NOT needed

Added an exception to svn_types.h: it now explicitly includes svn_error.h

since Everybody needs that thing. We go ahead and make it easy for them,

even though that is counter-philosophy.

After altering the header files, some .c files in our codebase would not

compile -- they used stuff that they did not explicitly include. Thus, a

goodly number of .c files were updated, too.

* subversion/libsvn_ra/wrapper_template.h:

* subversion/libsvn_ra/deprecated.c:

* subversion/libsvn_ra/compat.c:

* subversion/libsvn_subr/iter.c:

* subversion/libsvn_subr/cmdline.c:

* subversion/libsvn_subr/ssl_client_cert_pw_providers.c:

* subversion/libsvn_subr/error.c:

* subversion/libsvn_subr/auth.c:

* subversion/libsvn_subr/opt.c:

* subversion/libsvn_subr/checksum.c:

* subversion/libsvn_subr/compat.c:

* subversion/libsvn_subr/sha1.c:

* subversion/libsvn_subr/deprecated.c:

* subversion/libsvn_subr/ssl_server_trust_providers.c:

* subversion/mod_dav_svn/activity.c:

* subversion/mod_dav_svn/reports/log.c:

* subversion/tests/libsvn_fs/fs-test.c:

* subversion/tests/libsvn_repos/repos-test.c:

* subversion/svn/list-cmd.c:

* subversion/svn/changelist-cmd.c:

* subversion/svn/log-cmd.c:

* subversion/svn/conflict-callbacks.c:

* subversion/libsvn_fs_base/dag.c:

* subversion/libsvn_fs_base/util/fs_skels.c:

* subversion/include/svn_dirent_uri.h:

* subversion/include/svn_error_codes.h:

* subversion/include/svn_fs.h:

* subversion/include/svn_diff.h:

* subversion/include/svn_sorts.h:

* subversion/include/svn_mergeinfo.h:

* subversion/include/svn_base64.h:

* subversion/include/svn_dso.h:

* subversion/include/svn_ra_svn.h:

* subversion/include/svn_repos.h:

* subversion/include/svn_delta.h:

* subversion/include/svn_path.h:

* subversion/include/svn_subst.h:

* subversion/include/svn_xml.h:

* subversion/include/svn_props.h:

* subversion/include/svn_iter.h:

* subversion/include/svn_types.h:

* subversion/include/svn_config.h:

* subversion/include/svn_string.h:

* subversion/include/svn_io.h:

* subversion/include/svn_wc.h:

* subversion/include/svn_cmdline.h:

* subversion/include/svn_client.h:

* subversion/include/svn_user.h:

* subversion/include/svn_hash.h:

* subversion/include/svn_md5.h:

* subversion/include/svn_error.h:

* subversion/include/svn_pools.h:

* subversion/include/private/svn_log.h:

* subversion/include/svn_time.h:

* subversion/include/svn_utf.h:

* subversion/include/svn_auth.h:

* subversion/include/svn_ra.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_checksum.h:

* subversion/libsvn_wc/deprecated.c:

* subversion/libsvn_wc/util.c:

* subversion/libsvn_wc/merge.c:

* subversion/libsvn_wc/tree_conflicts.c:

* subversion/libsvn_client/list.c:

* subversion/libsvn_client/log.c:

* subversion/libsvn_ra_neon/util.c:

* subversion/libsvn_ra_neon/log.c:

* subversion/libsvn_repos/deprecated.c:

* subversion/libsvn_fs_fs/tree.c:

* subversion/libsvn_fs_fs/fs_fs.c:

(): adjust #include statements appropriately

  1. … 69 more files in changeset.
* subversion/include/svn_dirent_uri.h:

* subversion/include/svn_fs.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_wc.h: Place function types on separate lines.

  1. … 3 more files in changeset.
Mark deprecated functions with SVN_DEPRECATED.

* subversion/include/svn_types.h


* subversion/include/svn_auth.h:

* subversion/include/svn_base64.h:

* subversion/include/svn_client.h:

* subversion/include/svn_cmdline.h:

* subversion/include/svn_config.h:

* subversion/include/svn_delta.h:

* subversion/include/svn_diff.h:

* subversion/include/svn_dso.h:

* subversion/include/svn_error.h:

* subversion/include/svn_fs.h:

* subversion/include/svn_hash.h:

* subversion/include/svn_io.h:

* subversion/include/svn_opt.h:

* subversion/include/svn_ra.h:

* subversion/include/svn_ra_svn.h:

* subversion/include/svn_repos.h:

* subversion/include/svn_subst.h:

* subversion/include/svn_utf.h:

* subversion/include/svn_wc.h: Mark deprecated functions with SVN_DEPRECATED.

* www/hacking.html

  (deprecation): Update example.

Review by: blair


  1. … 20 more files in changeset.
* subversion/include/svn_opt.h

(svn_opt_args_to_target_array2): Add @deprecated tag.

Fix peg revision support for repository root urls to address issue

#3193. Along the way, unify some aspects of peg revision parsing into

a new helper function.

Patch by: Troy Curtis Jr <>

(Only minor tweaks by me.)

* subversion/include/private/svn_opt_private.h

(svn_opt__split_arg_at_peg_revision): New prototype.

* subversion/libsvn_subr/opt.c

(svn_opt__split_arg_at_peg_revision): New function.

(svn_opt_parse_path, svn_opt_args_to_target_array3): Replace in-line

peg revision parsing with call to new function.

* subversion/libsvn_client/cmdline.c

(svn_opt_args_to_target_array3): Same.

* subversion/include/svn_opt.h

(svn_opt_parse_path): Document error behavior more precisely.

* subversion/tests/cmdline/

(basic_relative_url_with_peg_revisions): New test.

(test_list): Run it.

  1. … 4 more files in changeset.
Implement repository root relative url support for the svn command-line

client. This allows the user to use '^/' in front of any target to

mean the repository root url. The repository root url is determined by

checking the other arguments' root urls (if they exist) and using that common

url. If none is found the root url of the current directory is used. If no

common repository root url can be found, an error is generated.

Patch by: Troy Curtis Jr <>

(minor tweaks by me)

* subversion/include/private/svn_opt_private.h

New file to hold inter-library svn_opt functions.

(svn_opt__arg_canonicalize_url): New function prototype.

(svn_opt__arg_canonicalize_path): New function prototype.

* subversion/include/svn_opt.h

(svn_opt_args_to_target_array3): Change doc string to reflect deprecated


* subversion/libsvn_subr/opt.c

(svn_opt__arg_canonicalize_url): New function to canonicalize user input


(svn_opt__arg_canonicalize_path): New function to canonicalize user input


(svn_opt_args_to_target_array3): Replace the inline canonicalization code

with calls to the new svn_opt__arg_canonicalize_* functions.

* subversion/include/svn_client.h

(svn_client_args_to_target_array): New function prototype.

* subversion/libsvn_client/cmdline.c

New file for client library commandline processing functionality.



check_root_url_of_target): New functions to support


(svn_client_args_to_target_array): New client function to parse user

arguments into a target array. Replaces use of

svn_opt_args_to_target_array3(). Remove the replicated knowledge of

admin directory names, and, as a side effect, don't skip path names

of "_svn" on systems that don't use that name for the admin dir.

* subversion/tests/libsvn_client/client-test.c

(test_args_to_target_array): New test function.

(test_funcs): Run new test function.

* subversion/tests/cmdline/

(warn_on_reserved_name): Modify test to work right with the new


* subversion/tests/cmdline/



basic_relative_url_using_current_dir): New test functions.

(test_list): Run new test functions.

* subversion/svn/cl.h

(svn_cl__args_to_target_array_print_reserved): Add client context parameter.

* subversion/svn/util.c

(svn_cl__args_to_target_array_print_reserved): Replace call to

svn_opt_args_to_target_array3() with svn_client_args_to_target_array().

* subversion/svn/update-cmd.c

(svn_cl__update): Replace svn_opt_args_to_target_array3() with

svn_cl__args_to_target_array_print_reserved() for consistency with the other

command line functions.

* subversion/svn/diff-cmd.c

(svn_cl__diff): Create a client context variable and use it in the

svn_cl__args_to_target_array_print_reserved() function along with

everywhere else it is needed.

* subversion/svn/add-cmd.c,






























Add client context variable to all the calls to


  1. … 41 more files in changeset.
* subversion/include/svn_opt.h

(svn_opt_parse_revprop): Follow-up to r29492: note this is new in 1.6.

Support --with-revprop in svnmucc.

* contrib/client-side/svnmucc/svnmucc.c

(commit_callback): Upgrade to svn_commit_callback2_t interface.

(execute): Take revprops hash instead of log message argument and pass

along to svn_ra_get_commit_editor3, not svn_ra_get_commit_editor.

(usage): Document --with-revprop option.

(main): Parse --with-revprop option, integrate with log message options,

and pass along to execute.

* subversion/libsvn_subr/opt.c

(svn_opt_parse_revprop): Move parse_revprop from subversion/svn/main.c

here; rename revprop_pair to revprop_spec, as it's not a pair

of revprops.

* subversion/include/svn_opt.h

(svn_opt_parse_revprop): Declare.

* subversion/svn/main.c

(parse_revprop): Remove.

(main): Use svn_opt_parse_revprop instead of parse_revprop.

  1. … 3 more files in changeset.