Here is my first shot at implementing the command-line repository root
relative url support in libsvn_client. Note to Julian: I chose not to return
a structure because after looking into it I found that it was a much larger
job than I wanted to do for relative url support...it was definetly not a
"gimme". I also found that it did not really gain me (or this patch) much
benefit.
[[[
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.
* 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
status.
* subversion/libsvn_subr/opt.c
(svn_opt__arg_canonicalize_url): New function to canonicalize user input
urls.
(svn_opt__arg_canonicalize_path): New function to canonicalize user input
paths.
(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.
(arg_is_repos_relative_url,
resolve_repos_relative_url,
check_root_url_of_target): New functions to support
svn_client_args_to_target_array.
(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()
* subversion/tests/libsvn_client/client-test.c
(test_args_to_target_array): New test function.
(test_funcs): Run new test function.
* subversion/tests/cmdline/special_tests.py
(warn_on_reserved_name): Modify test to work right with
svn_client_args_to_target_array.
* subversion/tests/cmdline/basic_tests.py
(basic_relative_url_multi_repo,
basic_relative_url_using_other_targets,
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 every
else it is needed.
* subversion/svn/merge-cmd.c,
subversion/svn/propdel-cmd.c,
subversion/svn/checkout-cmd.c,
subversion/svn/move-cmd.c,
subversion/svn/mkdir-cmd.c,
subversion/svn/cat-cmd.c,
subversion/svn/revert-cmd.c,
subversion/svn/copy-cmd.c,
subversion/svn/mergeinfo-cmd.c,
subversion/svn/list-cmd.c,
subversion/svn/blame-cmd.c,
subversion/svn/propget-cmd.c,
subversion/svn/changelist-cmd.c,
subversion/svn/log-cmd.c,
subversion/svn/resolved-cmd.c,
subversion/svn/cleanup-cmd.c,
subversion/svn/commit-cmd.c,
subversion/svn/add-cmd.c,
subversion/svn/propset-cmd.c,
subversion/svn/switch-cmd.c,
subversion/svn/delete-cmd.c,
subversion/svn/import-cmd.c,
subversion/svn/proplist-cmd.c,
subversion/svn/export-cmd.c,
subversion/svn/status-cmd.c,
subversion/svn/propedit-cmd.c,
subversion/svn/lock-cmd.c,
subversion/svn/info-cmd.c,
subversion/svn/unlock-cmd.c
Add client context variable to all the calls to
svn_cl__args_to_target_array_print_reserved().
]]]
Troy
--
Beware of spyware. If you can, use the Firefox browser. - USA Today
Download now at http://getfirefox.com
Registered Linux User #354814 ( http://counter.li.org/)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-03-26 05:21:24 CET