A client context structure, which holds client specific callbacks,
batons, serves as a cache for configuration options, and other various
and sundry things. In order to avoid backwards compatibility problems
clients should use svn_client_create_context() to allocate and
initialize this structure instead of doing so themselves.
A list of option help descriptions, keyed by the option unique enum
(the 2nd field in apr_getopt_option_t), which override the generic
descriptions given in an apr_getopt_option_t on a per-subcommand basis.
A list of option help descriptions, keyed by the option unique enum
(the 2nd field in apr_getopt_option_t), which override the generic
descriptions given in an apr_getopt_option_t on a per-subcommand basis.
A general in-memory representation of a single property. Most of
the time, property lists will be stored completely in hashes. But
sometimes it’s useful to have an “ordered” collection of
properties, in which case we use an array of these structures.
A collection of callbacks implemented by libsvn_client which allows
an RA layer to “pull” information from the client application, or
possibly store information. libsvn_client passes this vtable to
svn_ra_open5().
A vtable that is driven by svn_repos_parse_dumpstream().
Similar to #svn_repos_parse_fns2_t except that it lacks
the delete_node_property and apply_textdelta callbacks.
An #svn_txdelta_window_t object describes how to reconstruct a
contiguous section of the target string (the “target view”) using a
specified contiguous region of the source string (the “source
view”). It contains a series of instructions which assemble the
new target string text by pulling together substrings from:
Version information. Each library contains a function called
svn_libname_version() that returns a pointer to a statically
allocated object of this type.
Info about one of the conflicting versions of a node. Each field may
have its respective null/invalid/unknown value if the corresponding
information is not relevant or not available.
Similar to #svn_wc_diff_callbacks3_t, but without the @c dir_opened
and @c dir_closed functions, and without the @a tree_conflicted argument
to the functions.
A callback vtable invoked by our diff-editors, as they receive diffs
from the server. ‘svn diff’ and ‘svn merge’ implement their own versions
of this vtable.
A structure to report a summary of a working copy, including the
mix of revisions found within it, whether any parts are switched or
locally modified, and whether it is a sparse checkout.
Same as #svn_wc_status2_t, but without the #svn_lock_t ‘repos_lock’, const char ‘url’, #svn_revnum_t ‘ood_last_cmt_rev’, apr_time_t ‘ood_last_cmt_date’, #svn_node_kind_t ‘ood_kind’, const char ‘ood_last_cmt_author’, #svn_wc_conflict_description_t ‘tree_conflict’, #svn_boolean_t ‘file_external’, #svn_wc_status_kind ‘pristine_text_status’, and #svn_wc_status_kind ‘pristine_prop_status’ fields.
Exclude (i.e., don’t descend into) directory D.
@note In Subversion 1.5, svn_depth_exclude is not supported
anywhere in the client-side (libsvn_wc/libsvn_client/etc) code;
it is only supported as an argument to set_path functions in the
ra and repos reporters. (This will enable future versions of
Subversion to run updates, etc, against 1.5 servers with proper
svn_depth_exclude behavior, once we get a chance to implement
client-side support for svn_depth_exclude.)
D + immediate children (D and its entries). Updates will pull in
any files or subdirectories not already present; those
subdirectories’ this_dir entries will have depth-empty.
D + all descendants (full recursion from D). Updates will pull
in any files or subdirectories not already present; those
subdirectories’ this_dir entries will have depth-infinity.
Equivalent to the pre-1.5 default update behavior.
Depth undetermined or ignored. In some contexts, this means the
client should choose an appropriate default depth. The server
will generally treat it as #svn_depth_infinity.
@deprecated To improve consistency between ra layers, this error code
is replaced by SVN_ERR_BAD_CONFIG_VALUE.
Slated for removal in the next major release.
@deprecated To improve consistency between ra layers, this error code
is replaced in ra_serf by SVN_ERR_FS_NOT_FOUND.
Slated for removal in the next major release.
@deprecated To improve consistency between ra layers, this error code
is replaced in ra_serf by SVN_ERR_FS_NOT_FOUND.
Slated for removal in the next major release.
@since New in 1.5.
@deprecated Provided for backward compatibility with the 1.6 API.
This event is not an error, and is now reported
via the standard notification mechanism instead.
The (root, path)-pairs have a common ancestor (which may be one of
them) but there are changes between them, i.e. they don’t fall into
the @c svn_fs_node_unchanged category.
No changes have been made between the (root, path)-pairs, i.e. they
have the same (relative) nodes in their sub-trees, corresponding sub-
tree nodes have the same contents as well as properties and report the
same “created-path” and “created-rev” data. This implies having a
common ancestor.
The (root, path)-pairs are not related, i.e. none of the other cases
apply. If the roots refer to different @c svn_fs_t instances, then
they are always considered unrelated - even if the underlying
repository is the same.
pack has been a no-op for this repository. The next / future packable
shard will be given. If the shard is -1, then the repository does not
support packing at all.
@since New in 1.10.
Detected a mergeinfo path collision. Reported when the paths in
two or more entries in the same svn:mergeinfo property differ
only in character representation (normalization), but are
otherwise identical.
Detected a name collision. Reported when the names of two or more
entries in the same directory differ only in character
representation (normalization), but are otherwise identical.
Undefined; for private use only.
This value must never be returned in svn_wc_conflict_result_t,
but a separate value, unequal to all other pre-defined values may
be useful in conflict resolver implementations to signal that no
choice is made yet.
@since New in 1.9
Warn user that a path has moved from one changelist to another.
@since New in 1.5.
@deprecated As of 1.7, separate clear and set notifications are sent.
All conflicts on a path were marked as resolved.
@note As of 1.10, separate notifications are sent for individually
resolved text, property, and tree conflicts. This notification is used
only if all conflicts on a path were marked resolved at once.
The path is a tree-conflict victim of the intended action (not
a persistent tree-conflict from an earlier operation, but this
operation caused the tree-conflict). @since New in 1.6.
Progressing in search of repository for details about a tree conflict.
The revision being searched is specified in #svn_wc_notify_t.revision.
@since New in 1.10.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_simple_t that gets/sets information from the user’s
~/.subversion configuration directory.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_ssl_client_cert_pw_t that gets/sets information from the
user’s ~/.subversion configuration directory.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_simple_t that gets/sets information from the user’s
~/.subversion configuration directory.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_simple_t that gets/sets information from the user’s
~/.subversion configuration directory. Allocate @a *provider in
@a pool.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_ssl_client_cert_pw_t that gets/sets information from the
user’s ~/.subversion configuration directory. Allocate @a *provider in
@a pool.
Set @a *providers to an array of svn_auth_provider_object_t *
objects.
Only client authentication providers available for the current platform are
returned. Order of the platform-specific authentication providers is
determined by the ‘password-stores’ configuration option which is retrieved
from @a config. @a config can be NULL.
Set @a *provider to an authentication provider of type @c
svn_auth_provider_object_t, or return @c NULL if the provider is not
available for the requested platform or the requested provider is unknown.
Set @a *provider to an authentication provider of type
svn_auth_cred_simple_t that gets information by prompting the user
with @a prompt_func and @a prompt_baton. Allocate @a *provider in
@a pool.
Like svn_auth_get_simple_provider2, but without the ability to
call the svn_auth_plaintext_prompt_func_t callback, and the provider
always assumes that it is allowed to store the password in plaintext.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_simple_t that gets/sets information from the user’s
~/.subversion configuration directory.
Like svn_auth_get_ssl_client_cert_pw_file_provider2, but without
the ability to call the svn_auth_plaintext_passphrase_prompt_func_t
callback, and the provider always assumes that it is not allowed
to store the passphrase in plaintext.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_ssl_client_cert_pw_t that gets/sets information from the user’s
~/.subversion configuration directory.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_username_t that gets information by prompting the
user with @a prompt_func and @a prompt_baton. Allocate @a *provider
in @a pool.
Set @a *provider to an authentication provider of type @c
svn_auth_cred_username_t that gets/sets information from a user’s
~/.subversion configuration directory. Allocate @a *provider in
@a pool.
Given a @a proplist array of @c svn_prop_t structures, allocate
three new arrays in @a pool. Categorize each property and then
create new @c svn_prop_t structures in the proper lists. Each new
@c svn_prop_t structure’s fields will point to the same data within
@a proplist’s structures.
Return @a checksum from the serialized format at @a data. The checksum
will be allocated in @a result_pool, with any temporary allocations
performed in @a scratch_pool.
Compare checksums @a checksum1 and @a checksum2. If their kinds do not
match or if neither is all zeros, and their content does not match, then
return FALSE; else return TRUE.
Return an error of type #SVN_ERR_CHECKSUM_MISMATCH for @a actual and
@a expected checksums which do not match. Use @a fmt, and the following
parameters to populate the error message.
Return the hex representation of @a checksum, allocating the
string in @a pool. If @a checksum->digest is all zeros (that is,
0, not ‘0’) then return NULL. In 1.7+, @a checksum may be NULL
and NULL will be returned in that case.
Similar to svn_client_add4(), but with @a add_parents always set to
FALSE and @a depth set according to @a recursive: if TRUE, then
@a depth is #svn_depth_infinity, if FALSE, then #svn_depth_empty.
Add each path in @a paths (recursing to @a depth as necessary) to
@a changelist. If a path is already a member of another
changelist, then remove it from the other changelist and add it to
@a changelist. (For now, a path cannot belong to two changelists
at once.)
Pull remaining target arguments from @a os into @a *targets_p,
converting them to UTF-8, followed by targets from @a known_targets
(which might come from, for example, the “–targets” command line option).
Similar to svn_client_blame3(), but with @a diff_options set to
default options as returned by svn_diff_file_options_parse() and
@a ignore_mime_type set to FALSE.
Invoke @a receiver with @a receiver_baton on each line-blame item
associated with revision @a end of @a path_or_url, using @a start
as the default source of all blame. @a peg_revision indicates in
which revision @a path_or_url is valid. If @a peg_revision->kind
is #svn_opt_revision_unspecified, then it defaults to
#svn_opt_revision_head for URLs or #svn_opt_revision_working for
WC targets.
Similar to svn_client_checkout3() but with @a allow_unver_obstructions
always set to FALSE, and @a depth set according to @a recurse: if
@a recurse is TRUE, @a depth is #svn_depth_infinity, if @a recurse
is FALSE, @a depth is #svn_depth_files.
Similar to svn_client_commit4(), but always with NULL for
@a changelist_name, FALSE for @a keep_changelist, NULL for @a
revprop_table, and @a depth set according to @a recurse: if @a
recurse is TRUE, use #svn_depth_infinity, else #svn_depth_empty.
Similar to svn_client_commit5(), but returns the commit info in
@a *commit_info_p rather than through a callback function. Does not use
#svn_wc_notify_commit_copied or #svn_wc_notify_commit_copied_replaced
(preferring #svn_wc_notify_commit_added and
#svn_wc_notify_commit_replaced, respectively, instead).
Commit files or directories into repository, authenticating with
the authentication baton cached in @a ctx, and using
@a ctx->log_msg_func3/@a ctx->log_msg_baton3 to obtain the log message.
Set @a *commit_info_p to the results of the commit, allocated in @a pool.
Indicate the types of conflicts present on the working copy node
described by @a conflict. Any output argument may be @c NULL if
the caller is not interested in the status of a particular type.
Return the reason why the attempted action performed by an update, switch,
or merge operation conflicted with the state of the node in the working copy.
Return information about the repository associated with @a conflict.
In case of a foreign-repository merge this will differ from the
repository information associated with the merge target working copy.
Return a textual human-readable description of @a option, allocated in
@a result_pool. The description is encoded in UTF-8 and may contain
multiple lines separated by @c APR_EOL_STR.
Get a list of possible moved-to abspaths in the working copy which can be
svn_client_conflict_option_incoming_move_file_text_merge, or the
svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
Get a list of possible repository paths which can be applied to the
svn_client_conflict_option_incoming_move_file_text_merge, or the
svn_client_conflict_option_incoming_move_dir_merge resolution @a option.
Like svn_client_conflict_option_set_moved_to_abspath2(), except that
in SVN 1.10 this function raises an assertion failure if an option
other than svn_client_conflict_option_incoming_move_file_text_merge or
svn_client_conflict_option_incoming_move_dir_merge is passed.
Like svn_client_conflict_option_set_moved_to_repos_relpath2(), except
that in SVN 1.10 it raises an assertion failure if an option other
than svn_client_conflict_option_incoming_move_file_text_merge or
svn_client_conflict_option_incoming_move_dir_merge is passed.
Return a textual human-readable description of the property conflict
described by @a conflict, allocated in @a result_pool. The description
is encoded in UTF-8 and may contain multiple lines separated by
@c APR_EOL_STR. The last line is not terminated by a newline.
Return the set of property values involved in the conflict of property
PROPNAME described by @a conflict. If a property value is unavailable the
corresponding output argument is set to @c NULL.
Return the ID of the option this property @a conflict in property
@a propname has been resolved to.
If the conflict has not been resolved yet, then return
@c svn_client_conflict_option_unspecified.
Resolve a property @a conflict in property @a propname using resolution
option @a option. To resolve all properties to the same option at once,
set @a propname to the empty string “”.
If the provided @a option_id is the ID of an option which resolves
@a conflict, resolve the property conflict in property @a propname
using that option.
Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
Return the ID of the option this text @a conflict has been resolved to.
If the conflict has not been resolved yet, then return
@c svn_client_conflict_option_unspecified.
If the provided @a option_id is the ID of an option which resolves
@a conflict, resolve the text conflict using that option.
Else, return @c SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE.
Return a textual human-readable description of the tree conflict
described by @a conflict, allocated in @a result_pool. The description
is encoded in UTF-8 and may contain multiple lines separated by
@c APR_EOL_STR. The last line is not terminated by a newline.
Return the ID of the option this tree @a conflict has been resolved to.
If the conflict has not been resolved yet, then return
@c svn_client_conflict_option_unspecified.
Return the node kind of the tree conflict victim described by @a conflict.
The victim is the local node in the working copy which was affected by the
tree conflict at the time the conflict was raised.
Walk all conflicts within the specified @a depth of @a local_abspath.
Pass each conflict found during the walk to the @a conflict_walk_func
callback, along with @a conflict_walk_func_baton.
Use cancellation and notification support provided by client context @a ctx.
Similar to svn_client_copy3(), with the difference that if @a dst_path
already exists and is a directory, copy the item into that directory,
keeping its name (the last component of @a src_path).
Similar to svn_client_copy4(), with only one @a src_path, @a
copy_as_child set to @c FALSE, @a revprop_table passed as NULL, and
@a make_parents set to @c FALSE. Also, use @a src_revision as both
the operational and peg revision.
Initialize a client context.
Set @a *ctx to a client context object, allocated in @a pool, that
represents a particular instance of an svn client. @a cfg_hash is used
to initialise the config member of the returned context object and should
remain valid for the lifetime of the object. @a cfg_hash may be @c NULL,
in which case it is ignored.
Similar to svn_client_diff4(), but with @a changelists passed as @c
NULL, and @a depth set according to @a recurse: if @a recurse is
TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
FALSE, set @a depth to #svn_depth_empty.
Similar to svn_client_diff6(), but with @a outfile and @a errfile,
instead of @a outstream and @a errstream, and with @a
no_diff_added, @a ignore_properties, and @a properties_only always
passed as @c FALSE (which means that additions and property changes
are always transmitted).
Produce diff output which describes the delta between
@a path_or_url1/@a revision1 and @a path_or_url2/@a revision2. Print
the output of the diff to @a outstream, and any errors to @a
errstream. @a path_or_url1 and @a path_or_url2 can be either
working-copy paths or URLs.
Similar to svn_client_diff_peg4(), but with @a changelists passed
as @c NULL, and @a depth set according to @a recurse: if @a recurse
is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
FALSE, set @a depth to #svn_depth_files.
Similar to svn_client_diff6_peg6(), but with @a outfile and @a errfile,
instead of @a outstream and @a errstream, and with @a
no_diff_added, @a ignore_properties, and @a properties_only always
passed as @c FALSE (which means that additions and property changes
are always transmitted).
Produce diff output which describes the delta between the filesystem
object @a path_or_url in peg revision @a peg_revision, as it changed
between @a start_revision and @a end_revision. @a path_or_url can
be either a working-copy path or URL.
Similar to svn_client_diff_summarize2(), but with @a changelists
passed as @c NULL, and @a depth set according to @a recurse: if @a
recurse is TRUE, set @a depth to #svn_depth_infinity, if @a
recurse is FALSE, set @a depth to #svn_depth_files.
Produce a diff summary which lists the changed items between
@a path_or_url1/@a revision1 and @a path_or_url2/@a revision2 without
creating text deltas. @a path_or_url1 and @a path_or_url2 can be
either working-copy paths or URLs.
Similar to svn_client_diff_summarize_peg2(), but with @a
changelists passed as @c NULL, and @a depth set according to @a
recurse: if @a recurse is TRUE, set @a depth to
#svn_depth_infinity, if @a recurse is FALSE, set @a depth to
#svn_depth_files.
Produce a diff summary which lists the changed items between the
filesystem object @a path_or_url in peg revision @a peg_revision, as it
changed between @a start_revision and @a end_revision. @a path_or_url can
be either a working-copy path or URL.
Similar to svn_client_export3(), but with @a peg_revision
always set to #svn_opt_revision_unspecified, @a overwrite set to
the value of @a force, @a ignore_externals always FALSE, and
@a recurse always TRUE.
Similar to svn_client_export4(), but with @a depth set according to
@a recurse: if @a recurse is TRUE, set @a depth to
#svn_depth_infinity, if @a recurse is FALSE, set @a depth to
#svn_depth_files.
Export the contents of either a subversion repository or a
subversion working copy into a ‘clean’ directory (meaning a
directory with no administrative directories). If @a result_rev
is not @c NULL and the path being exported is a repository URL, set
@a *result_rev to the value of the revision actually exported (set
it to #SVN_INVALID_REVNUM for local exports).
Beginning at @a path, crawl to @a depth to discover every path in
or under @a path which belongs to one of the changelists in @a
changelists (an array of const char * changelist names).
If @a changelists is @c NULL, discover paths with any changelist.
Call @a callback_func (with @a callback_baton) each time a
changelist-having path is discovered.
Set @a *repos_root_url and @a *repos_uuid, to the root URL and UUID of
the repository in which @a abspath_or_url is versioned. Use the
authentication baton and working copy context cached in @a ctx as
necessary. @a repos_root_url and/or @a repos_uuid may be NULL if not
wanted.
Create and return @a *provider, an authentication provider of type
svn_auth_cred_simple_t that gets information by prompting the user
with @a prompt_func and @a prompt_baton. Allocate @a *provider in
@a pool.
Create and return @a *provider, an authentication provider of type
#svn_auth_cred_simple_t that gets/sets information from the user’s
~/.subversion configuration directory. Allocate @a *provider in
@a pool.
Create and return @a *provider, an authentication provider of type
#svn_auth_cred_username_t that gets information by prompting the
user with @a prompt_func and @a prompt_baton. Allocate @a *provider
in @a pool.
Create and return @a *provider, an authentication provider of type
#svn_auth_cred_username_t that gets/sets information from a user’s
~/.subversion configuration directory. Allocate @a *provider in
@a pool.
Similar to svn_client_import3(), but with @a ignore_unknown_node_types
always set to @c FALSE, @a revprop_table passed as NULL, and @a
depth set according to @a nonrecursive: if TRUE, then @a depth is
#svn_depth_files, else #svn_depth_infinity.
Import file or directory @a path into repository directory @a url at
head, authenticating with the authentication baton cached in @a ctx,
and using @a ctx->log_msg_func3/@a ctx->log_msg_baton3 to get a log message
for the (implied) commit. If some components of @a url do not exist
then create parent directories as necessary.
Similar to svn_client_info2() but with @a changelists passed as @c
NULL, and @a depth set according to @a recurse: if @a recurse is
TRUE, @a depth is #svn_depth_infinity, else #svn_depth_empty.
Invoke @a receiver with @a receiver_baton to return information
about @a abspath_or_url in @a revision. The information returned is
system-generated metadata, not the sort of “property” metadata
created by users. See #svn_client_info2_t.
Similar to svn_client_list2(), but with @a recurse instead of @a depth.
If @a recurse is FALSE, pass #svn_depth_immediates for @a depth; else
pass #svn_depth_infinity.
Report the directory entry, and possibly children, for @a
path_or_url at @a revision. The actual node revision selected is
determined by the path as it exists in @a peg_revision. If @a
peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
to #svn_opt_revision_head for URLs or #svn_opt_revision_working
for WC targets.
Lock @a targets in the repository. @a targets is an array of
const char * paths - either all working copy paths or all URLs.
All targets must be in the same repository.
Similar to svn_client_log4(), but using #svn_log_message_receiver_t
instead of #svn_log_entry_receiver_t. Also, @a
include_merged_revisions is set to @c FALSE and @a revprops is
svn:author, svn:date, and svn:log.
Invoke @a receiver with @a receiver_baton on each log message from
each (#svn_opt_revision_range_t *) range in @a revision_ranges in turn,
inclusive (but never invoke @a receiver on a given log message more
than once).
Same as svn_client_list(), but always passes #SVN_DIRENT_ALL for
the @a dirent_fields argument and returns all information in two
hash tables instead of invoking a callback.
Similar to svn_client_merge3(), but with @a record_only set to @c
FALSE, and @a depth set according to @a recurse: if @a recurse is
TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
FALSE, set @a depth to #svn_depth_files.
Similar to svn_client_merge4(), but with @a allow_mixed_rev set to
@c TRUE. The @a force parameter maps to the @c force_delete parameter
of svn_client_merge4().
Similar to svn_client_merge_peg3(), but with @a record_only set to
@c FALSE, and @a depth set according to @a recurse: if @a recurse
is TRUE, set @a depth to #svn_depth_infinity, if @a recurse is
FALSE, set @a depth to #svn_depth_files.
Similar to svn_client_merge_peg4(), but with @a allow_mixed_rev set to
@c TRUE. The @a force parameter maps to the @c force_delete parameter
of svn_client_merge_peg4().
Similar to svn_client_merge_peg5(), but automatic merge is not available
(@a ranges_to_merge must not be NULL), and the single @a ignore_ancestry
parameter maps to both @c ignore_mergeinfo and @c diff_ignore_ancestry.
Merge changes from the source branch identified by
@a source_path_or_url in peg revision @a source_peg_revision,
into the target branch working copy at @a target_wcpath.
Perform a reintegration merge of @a source_path_or_url at @a source_peg_revision
into @a target_wcpath.
@a target_wcpath must be a single-revision, #svn_depth_infinity,
pristine, unswitched working copy – in other words, it must
reflect a single revision tree, the “target”. The mergeinfo on @a
source_path_or_url must reflect that all of the target has been merged into it.
Then this behaves like a merge with svn_client_merge5() from the
target’s URL to the source.
Set @a *min_revision and @a *max_revision to the lowest and highest
revision numbers found within @a local_abspath. If @a committed is
TRUE, set @a *min_revision and @a *max_revision to the lowest and
highest comitted (i.e. “last changed”) revision numbers,
respectively. NULL may be passed for either of @a min_revision and
@a max_revision to indicate the caller’s lack of interest in the
value. Use @a scratch_pool for temporary allocations.
Similar to svn_client_move2(), but an extra argument @a src_revision
must be passed. This has no effect, but must be of kind
#svn_opt_revision_unspecified or #svn_opt_revision_head,
otherwise error #SVN_ERR_UNSUPPORTED_FEATURE is returned.
Similar to svn_client_move4(), with the difference that if @a dst_path
already exists and is a directory, move the item into that directory,
keeping its name (the last component of @a src_path).
Similar to svn_client_move5(), with only one @a src_path, @a
move_as_child set to @c FALSE, @a revprop_table passed as NULL, and
@a make_parents set to @c FALSE.
Similar to svn_client_open_ra_session2(), but with @ wri_abspath
always passed as NULL, and with the same pool used as both @a
result_pool and @a scratch_pool.
Similar to svn_client_propget3(), except that @a actual_revnum and
@a changelists are always @c NULL, and @a depth is set according to
@a recurse: if @a recurse is TRUE, then @a depth is
#svn_depth_infinity, else #svn_depth_empty.
Similar to svn_client_propget4(), but with the following change to the
output hash keys: keys are `char *’ paths, prefixed by
@a target, which is a working copy path or a URL.
Set @a *props to a hash table whose keys are absolute paths or URLs
of items on which property @a propname is explicitly set, and whose
values are svn_string_t * representing the property value for
@a propname at that path.
Similar to svn_client_proplist3(), except the properties are
returned as an array of #svn_client_proplist_item_t * structures
instead of by invoking the receiver function, there’s no support
for @a changelists filtering, and @a recurse is used instead of a
#svn_depth_t parameter (FALSE corresponds to #svn_depth_empty,
and TRUE to #svn_depth_infinity).
Similar to svn_client_proplist4(), except that the @a receiver type
is a #svn_proplist_receiver_t, @a get_target_inherited_props is
always passed NULL, and there is no separate scratch pool.
Invoke @a receiver with @a receiver_baton to return the regular explicit, and
possibly the inherited, properties of @a target, a URL or working copy path.
@a receiver will be called for each path encountered.
Like svn_client_propset3(), but with @a base_revision_for_url
always #SVN_INVALID_REVNUM; @a commit_info_p always @c NULL; @a
changelists always @c NULL; @a revprop_table always @c NULL; and @a
depth set according to @a recurse: if @a recurse is TRUE, @a depth
is #svn_depth_infinity, else #svn_depth_empty.
An amalgamation of svn_client_propset_local() and
svn_client_propset_remote() that takes only a single target, and
returns the commit info in @a *commit_info_p rather than through a
callback function.
Set @a propname to @a propval on each (const char *) target in @a
targets. The targets must be all working copy paths. A @a propval
of @c NULL will delete the property.
Recursively modify a working copy rooted at @a wcroot_dir, changing
any repository URLs that begin with @a from_prefix to begin with @a
to_prefix instead.
Similar to svn_client_revert2(), but with @a changelists passed as
@c NULL, and @a depth set according to @a recurse: if @a recurse is
TRUE, @a depth is #svn_depth_infinity, else if @a recurse is
FALSE, @a depth is #svn_depth_empty.
Restore the pristine version of working copy @a paths,
effectively undoing any local mods. This means returning each
path’s versioned status to ‘unmodified’ and changing its on-disk
state to match that.
Set @a *propval to the value of @a propname on revision @a revision
in the repository represented by @a URL. Use the authentication baton
in @a ctx for authentication, and @a pool for all memory allocation.
Return the actual rev queried in @a *set_rev.
Set @a *props to a hash of the revision props attached to @a revision in
the repository represented by @a URL. Use the authentication baton cached
in @a ctx for authentication, and @a pool for all memory allocation.
Return the actual rev queried in @a *set_rev.
Set @a propname to @a propval on revision @a revision in the repository
represented by @a URL. Use the authentication baton in @a ctx for
authentication, and @a pool for all memory allocation. Return the actual
rev affected in @a *set_rev. A @a propval of @c NULL will delete the
property.
Set @a *url to the repository root URL of the repository in which
@a path_or_url is versioned (or scheduled to be versioned),
allocated in @a pool. @a ctx is required for possible repository
authentication.
Similar to svn_client_status2(), but with @a ignore_externals
always set to FALSE, taking the #svn_wc_status_func_t type
instead of the #svn_wc_status_func2_t type for @a status_func,
and requiring @a *revision to be non-const even though it is
treated as constant.
Like svn_client_status3(), except with @a changelists passed as @c
NULL, and with @a recurse instead of @a depth. If @a recurse is
TRUE, behave as if for #svn_depth_infinity; else if @a recurse is
FALSE, behave as if for #svn_depth_immediates.
Given @a path to a working copy directory (or single file), call
@a status_func/status_baton with a set of #svn_wc_status_t *
structures which describe the status of @a path, and its children
(recursing according to @a depth).
Set @a suggestions to an ordered array of @c const char *
potential merge sources (expressed as full repository URLs) for @a
path_or_url at @a peg_revision. @a path_or_url is a working copy
path or repository URL. @a ctx is a context used for
authentication in the repository case. Use @a pool for all
allocations.
Similar to svn_client_switch2() but with @a allow_unver_obstructions,
@a ignore_externals, and @a depth_is_sticky always set to FALSE,
and @a depth set according to @a recurse: if @a recurse is TRUE,
set @a depth to #svn_depth_infinity, if @a recurse is FALSE, set
@a depth to #svn_depth_files.
Unlock @a targets in the repository. @a targets is an array of
const char * paths - either all working copy paths or all URLs.
All targets must be in the same repository.
Similar to svn_client_update2() except that it accepts only a single
target in @a path, returns a single revision if @a result_rev is
not NULL, and @a ignore_externals is always set to FALSE.
Similar to svn_client_update3() but with @a allow_unver_obstructions
always set to FALSE, @a depth_is_sticky to FALSE, and @a depth set
according to @a recurse: if @a recurse is TRUE, set @a depth to
#svn_depth_infinity, if @a recurse is FALSE, set @a depth to
#svn_depth_files.
Update working trees @a paths to @a revision, authenticating with the
authentication baton cached in @a ctx. @a paths is an array of const
char * paths to be updated. Unversioned paths that are direct children
of a versioned path will cause an update that attempts to add that path;
other unversioned paths are skipped. If @a result_revs is not NULL,
@a *result_revs will be set to an array of svn_revnum_t with each
element set to the revision to which @a revision was resolved for the
corresponding element of @a paths.
Return, in @a *handler2 and @a *handler2_baton a function/baton that
will call @a handler/@a handler_baton, allocating the @a *handler2_baton
in @a pool.
Try to ensure that the user’s ~/.subversion/ area exists, and create
no-op template files for any absent config files. Use @a pool for any
temporary allocation. If @a config_dir is not @c NULL it specifies a
directory from which to read the config overriding all other sources.
Enumerate the options in @a section, passing @a baton and the current
option’s name and value to @a callback. Continue the enumeration if
@a callback returns @c TRUE. Return the number of times @a callback
was called.
Enumerate the sections, passing @a baton and the current section’s name
to @a callback. Continue the enumeration if @a callback returns @c TRUE.
Return the number of times @a callback was called.
Enumerate the group @a master_section in @a cfg. Each variable
value is interpreted as a list of glob patterns (separated by comma
and optional whitespace). Return the name of the first variable
whose value matches @a key, or @c NULL if no variable matches.
Read configuration information from the standard sources and merge it
into the hash @a *cfg_hash. If @a config_dir is not NULL it specifies a
directory from which to read the configuration files, overriding all
other sources. Otherwise, first read any system-wide configurations
(from a file or from the registry), then merge in personal
configurations (again from file or registry). The hash and all its data
are allocated in @a pool.
Retrieve value into @a result_value corresponding to @a option_name for a
given @a server_group in @a cfg, or return @a default_value if none is
found.
Like svn_config_read(), but merges the configuration data from @a file
(a file or registry path) into @a *cfg, which was previously returned
from svn_config_read(). This function invalidates all value
expansions in @a cfg, so that the next svn_config_get() takes the
modifications into account.
Use @a cred_kind and @a realmstring to locate a file within the
~/.subversion/auth/ area. If the file exists, initialize @a *hash
and load the file contents into the hash, using @a pool. If the
file doesn’t exist, set @a *hash to NULL.
Call @a walk_func with @a walk_baton and information describing
each credential cached within the Subversion auth store located
under @a config_dir. If the callback sets its delete_cred return
flag, delete the associated credential.
Use @a cred_kind and @a realmstring to create or overwrite a file
within the ~/.subversion/auth/ area. Write the contents of @a hash into
the file. If @a config_dir is not NULL it specifies a directory to read
the config overriding all other sources.
Parse the C string @a str into a 32 bit number, and return it in @a *n.
Assume that the number is represented in base 10.
Raise an error if conversion fails (e.g. due to overflow).
Parse the C string @a str into a 64 bit number, and return it in @a *n.
Assume that the number is represented in base 10.
Raise an error if conversion fails (e.g. due to overflow).
Parse the C string @a str into an unsigned 32 bit number, and return
it in @a *n. Assume that the number is represented in base 10.
Raise an error if conversion fails (e.g. due to overflow).
Parse the C string @a str into an unsigned 64 bit number, and return
it in @a *n. Assume that the number is represented in base 10.
Raise an error if conversion fails (e.g. due to overflow).
Return a cstring which is the concatenation of @a strings (an array
of char *) joined by @a separator. Allocate the result in @a pool.
If @a strings is empty, then return the empty string.
If @a trailing_separator is non-zero, also append the separator
after the last joined element.
Skip the common prefix @a prefix from the C string @a str, and return
a pointer to the next character after the prefix.
Return @c NULL if @a str does not start with @a prefix.
Like svn_cstring_split(), but append to existing @a array instead of
creating a new one. Allocate the copied substrings in @a pool
(i.e., caller decides whether or not to pass @a array->pool as @a pool).
Parse the C string @a str into a 64 bit number, and return it in @a *n.
Assume that the number is represented in base @a base.
Raise an error if conversion fails (e.g. due to overflow), or if the
converted number is smaller than @a minval or larger than @a maxval.
Parse the C string @a str into an unsigned 64 bit number, and return
it in @a *n. Assume that the number is represented in base @a base.
Raise an error if conversion fails (e.g. due to overflow), or if the
converted number is smaller than @a minval or larger than @a maxval.
Get the next token from @a *str interpreting any char from @a sep as a
token separator. Separators at the beginning of @a str will be skipped.
Returns a pointer to the beginning of the first token in @a *str or NULL
if no token is left. Modifies @a str such that the next call will return
the next token.
Return the appropriate depth for @a depth_str. @a word is as
returned from svn_depth_to_word(). If @a depth_str does not
represent a recognized depth, return #svn_depth_unknown.
Return a constant string expressing @a depth as an English word,
e.g., “infinity”, “immediates”, etc. The string is not localized,
as it may be used for client<->server communications.
Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
return a diff object in @a *diff that represents a difference between
three datasources: “original”, “modified”, and “latest”. Do all
allocation in @a pool.
Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
return a diff object in @a *diff that represents a difference between
two datasources: “original” and “latest”, adjusted to become a full
difference between “original”, “modified” and “latest” using “ancestor”.
Do all allocation in @a pool.
Given a vtable of @a diff_fns/@a diff_baton for reading datasources,
return a diff object in @a *diff that represents a difference between
an “original” and “modified” datasource. Do all allocation in @a pool.
Parse @a args, an array of const char * command line switches
and adjust @a options accordingly. @a options is assumed to be initialized
with default values. @a pool is used for temporary allocation.
Similar to svn_diff_file_output_merge2, but with @a
display_original_in_conflict and @a display_resolved_conflicts
booleans instead of the @a conflict_style enum.
Return the number of lines of leading context of @a hunk,
i.e. the number of lines starting with ’ ’ before the first line
that starts with a ‘+’ or ‘-’.
@since New in 1.7.
Return the number of lines of trailing context of @a hunk,
i.e. the number of lines starting with ’ ’ after the last line
that starts with a ‘+’ or ‘-’.
@since New in 1.7.
Allocate @a *stringbuf in @a result_pool, and read into it one line
of the diff text of @a hunk. The hunk header is not returned only the
unidiff data lines (starting with ‘+’, ‘-’, or ’ ’) are returned.
If the @a hunk is being interpreted in reverse (i.e. the reverse
parameter of svn_diff_parse_next_patch() was @c TRUE), the diff
text will be returned in reversed form.
The line-terminator is detected automatically and stored in @a *eol
if @a eol is not NULL.
If EOF is reached, set @a *eof to TRUE, and set @a *eol to NULL if the
hunk does not end with a newline character and @a eol is not NULL.
Temporary allocations will be performed in @a scratch_pool.
Allocate @a *stringbuf in @a result_pool, and read into it one line
of the original text of @a hunk.
The line-terminator is detected automatically and stored in @a *eol
if @a eol is not NULL.
If EOF is reached, set @a *eof to TRUE, and set @a *eol to NULL if the
hunk text does not end with a newline character and @a eol is not NULL.
Temporary allocations will be performed in @a scratch_pool.
Similar to svn_diff_mem_string_output_merge2, but with @a
display_original_in_conflict and @a display_resolved_conflicts
booleans instead of the @a conflict_style enum.
Output the @a diff generated by svn_diff_mem_string_diff3() in diff3
format on @a output_stream, using @a original, @a modified and @a latest
for content changes.
Outputs the @a diff object generated by svn_diff_mem_string_diff()
in unified diff format on @a output_stream, using @a original
and @a modified for the text in the output.
Creates a git-like binary diff hunk describing the differences between
@a original and @a latest. It does this by either producing either the
literal content of both versions in a compressed format, or by describing
one way transforms.
Return the next @a *patch in @a patch_file.
If no patch can be found, set @a *patch to NULL.
If @a reverse is TRUE, invert the patch while parsing it.
If @a ignore_whitespace is TRUE, allow patches with no leading
whitespace to be parsed.
Allocate results in @a result_pool.
Use @a scratch_pool for all other allocations.
Gets the name of the specified canonicalized @a dirent as it is known
within its parent directory. If the @a dirent is root, return “”. The
returned value will not have slashes in it.
Find the common prefix of the canonicalized dirents in @a targets
(an array of const char *’s), and remove redundant dirents if @a
remove_redundancies is TRUE.
Convert @a relative canonicalized dirent to an absolute dirent and
return the results in @a *pabsolute.
Raise SVN_ERR_BAD_FILENAME if the absolute dirent cannot be determined.
Convert @a dirent from the local style to the canonical internal style
and return it in @a *internal_style_dirent. “Local style” means native
path separators and “.” for the empty path.
Similar to svn_dirent_skip_ancestor(), except that if @a child_dirent is
the same as @a parent_dirent, it is not considered a child, so the result
is @c NULL; an empty string is never returned.
Join @a path onto @a base_path, checking that @a path does not attempt
to traverse above @a base_path. If @a path or any “..” component within
it resolves to a path above @a base_path, or if @a path is an absolute
path, then set @a *under_root to @c FALSE. Otherwise, set @a *under_root
to @c TRUE and, if @a result_path is not @c NULL, set @a *result_path to
the resulting path.
Convert @a dirent from the internal style to the local style.
“Local style” means native path separators and “.” for the empty path.
If the input is not canonical, the output may not be canonical.
Return the relative path part of @a child_dirent that is below
@a parent_dirent, or just “” if @a parent_dirent is equal to
@a child_dirent. If @a child_dirent is not below or equal to
@a parent_dirent, return NULL.
If @a err has a custom error message, return that, otherwise
store the generic error string associated with @a err->apr_err into
@a buf (terminating with NULL) and return @a buf.
A helper function for the macros that report malfunctions. Handle a
malfunction by calling the current “malfunction handler” which may have
been specified by a call to svn_error_set_malfunction_handler() or else
is the default handler as specified in that function’s documentation.
Add @a new_err to the end of @a chain’s chain of errors. The @a new_err
chain will be copied into @a chain’s pool and destroyed, so @a new_err
itself becomes invalid after this function.
Compose two errors, returning the composition as a brand new error
and consuming the original errors. Either or both of @a err1 and
@a err2 may be @c SVN_NO_ERROR. If both are not @c SVN_NO_ERROR,
@a err2 will follow @a err1 in the chain of the returned error.
Return the first error in @a err’s chain that has an error code @a
apr_err or #SVN_NO_ERROR if there is no error with that code. The
returned error should @em not be cleared as it shares memory with @a err.
Returns an error chain that is based on @a err’s error chain but
does not include any error tracing placeholders. @a err is not
modified, except for any allocations using its pool.
If @a child is SVN_NO_ERROR, return SVN_NO_ERROR.
Else, prepend a new error to the error chain of @a child. The new error
uses @a new_msg as error message but all other error attributes (such
as the error code) are copied from @a child.
Return the root cause of @a err by finding the last error in its
chain (e.g. it or its children). @a err may be @c SVN_NO_ERROR, in
which case @c SVN_NO_ERROR is returned. The returned error should
@em not be cleared as it shares memory with @a err.
Return the symbolic name of an error code. If the error code
is in svn_error_codes.h, return the name of the macro as a string.
If the error number is not recognised, return @c NULL.
Wrap a @a status from an APR function. If @a fmt is NULL, this is
equivalent to svn_error_create(status,NULL,NULL). Otherwise,
the error message is constructed by formatting @a fmt and the
following arguments according to apr_psprintf(), and then
appending “: “ and the error message corresponding to @a status.
(If UTF-8 translation of the APR error message fails, the “: “ and
APR error are not appended to the error message.)
Abort the transaction @a txn. Any changes made in @a txn are
discarded, and the filesystem is left unchanged. Use @a pool for
any necessary allocations.
Push a lock-token @a token associated with path @a path into the
context @a access_ctx. The context remembers all tokens it
receives, and makes them available to fs functions. The token and
path are not duplicated into @a access_ctx’s pool; make sure the
token’s lifetime is at least as long as @a access_ctx.
Begin a new transaction on the filesystem @a fs, based on existing
revision @a rev. Set @a *txn_p to a pointer to the new transaction.
When committed, this transaction will create a new revision.
Change a transactions @a txn’s property’s value, or add/delete a
property. @a name is the name of the property to change, and @a value
is the new value of the property, or zero if the property should be
removed altogether. Do any necessary temporary allocation in @a pool.
Change, add, and/or delete transaction property values in
transaction @a txn. @a props is an array of svn_prop_t
elements. This is equivalent to calling svn_fs_change_txn_prop()
multiple times with the @c name and @c value fields of each
successive svn_prop_t, but may be more efficient.
(Properties not mentioned are left alone.) Do any necessary
temporary allocation in @a pool.
Set @a *kind_p to the type of node present at @a path under @a
root. If @a path does not exist under @a root, set @a *kind_p to
#svn_node_none. Use @a pool for temporary allocation.
Free the root directory @a root; this only needs to be used if you want to
free the memory associated with @a root earlier than the time you destroy
the pool passed to the function that created it (svn_fs_revision_root() or
svn_fs_txn_root()).
Set @a *root_p and @a *path_p to the revision root and path of the
destination of the most recent copy event that caused @a path to
exist where it does in @a root, or to NULL if no such copy exists.
Return a shallow copy of the configuration parameters used to open
@a fs, allocated in @a pool. It may be @c NULL. The contents of the
hash contents remains valid only for @a fs’s lifetime.
Create a copy of @a from_path in @a from_root named @a to_path in
@a to_root. If @a from_path in @a from_root is a directory, copy the
tree it refers to recursively.
Create a new, empty Subversion filesystem, stored in the directory
@a path, and return a pointer to it in @a *fs_p. @a path must not
currently exist, but its parent must exist. If @a fs_config is not
@c NULL, the options it contains modify the behavior of the
filesystem. The interpretation of @a fs_config is specific to the
filesystem back-end. The new filesystem may be closed by
destroying @a result_pool.
Set @a *access_ctx to a new #svn_fs_access_t object representing
@a username, allocated in @a pool. @a username is presumed to
have been authenticated by the caller.
Delete the node named @a path in @a root. If the node being deleted is
a directory, its contents will be deleted recursively. @a root must be
the root of a transaction, not of a revision. Use @a pool for
temporary allocation.
Provide filesystem @a fs the opportunity to compress storage relating to
associated with @a revision in filesystem @a fs. Use @a pool for all
allocations.
Set @a *entries_p to a newly allocated APR hash table containing the
entries of the directory at @a path in @a root. The keys of the table
are entry names, as byte strings, excluding the final NULL
character; the table’s values are pointers to #svn_fs_dirent_t
structures. Allocate the table and its contents in @a pool.
Take the #svn_fs_dirent_t structures in @a entries as returned by
#svn_fs_dir_entries for @a root and determine an optimized ordering
in which data access would most likely be efficient. Set @a *ordered_p
to a newly allocated APR array of pointers to these #svn_fs_dirent_t
structures. Allocate the array (but not its contents) in @a result_pool
and use @a scratch_pool for temporaries.
Set @a *checksum to the checksum of type @a kind for the file @a path.
@a *checksum will be allocated out of @a pool, which will also be used
for temporary allocations.
Set @a *contents to a readable generic stream that will yield the
contents of the file @a path in @a root. Allocate the stream in
@a pool. You can only use @a *contents for as long as the underlying
filesystem is open. If @a path is not a file, return
#SVN_ERR_FS_NOT_FILE.
Same as svn_fs_file_checksum(), only always put the MD5 checksum of file
@a path into @a digest, which should point to @c APR_MD5_DIGESTSIZE bytes
of storage. If the checksum doesn’t exist, put all 0’s into @a digest.
Set @a *stream_p to a pointer to a delta stream that will turn the
contents of the file @a source into the contents of the file @a target.
If @a source_root is zero, use a file with zero length as the source.
Similar to svn_fs_get_locks2(), but with @a depth always passed as
svn_depth_infinity, and with the following known problem (which is
not present in svn_fs_get_locks2()):
Set @a *prev_history_p to an opaque node history object which
represents the previous (or “next oldest”) interesting history
location for the filesystem node represented by @a history, or @c
NULL if no such previous history exists. If @a cross_copies is @c
FALSE, also return @c NULL if stepping backwards in history to @a
*prev_history_p would cross a filesystem copy operation.
Copy a possibly live Subversion filesystem from @a src_path to
@a dest_path. If @a clean is @c TRUE, perform cleanup on the
source filesystem as part of the copy operation; currently, this
means deleting copied, unused logfiles for a Berkeley DB source
filesystem.
Set @a *fs_info to a struct describing @a fs. The type of the
struct depends on the backend: for #SVN_FS_TYPE_FSFS, the struct will be
of type #svn_fs_fsfs_info_t; for #SVN_FS_TYPE_FSX, it will be of type
#svn_fs_fsx_info_t; otherwise, the struct is guaranteed to be
(compatible with) #svn_fs_info_placeholder_t.
Return a duplicate of @a info, allocated in @a result_pool. The returned
struct will be of the same type as the passed-in struct, which itself
must have been returned from svn_fs_info() or svn_fs_info_dup(). No part
of the new structure will be shared with @a info (except static string
constants). Use @a scratch_pool for temporary allocations.
Callers should invoke this function to initialize global state in
the FS library before creating FS objects. If this function is
invoked, no FS objects may be created in another thread at the same
time as this invocation, and the provided @a pool must last longer
than any FS object created subsequently.
Issue a filesystem-specific input/output operation defined by @a ctlcode
(usually, a low-level operation which cannot be expressed by other
filesystem APIs). If @a fs is @c NULL, issue a global operation.
If @a fs is not @c NULL, issue an operation that is specific to this
filesystem instance.
Set @a *names_p to an array of const char * ids which are the
names of all the currently active transactions in the filesystem @a fs.
Allocate the array in @a pool.
Create a new directory named @a path in @a root. The new directory has
no entries, and no properties. @a root must be the root of a transaction,
not a revision.
Create a new file named @a path in @a root. The file’s initial contents
are the empty string, and it has no properties. @a root must be the
root of a transaction, not a revision.
Set @a *created_path to the path at which @a path under @a root was
created. Use @a pool for all allocations. Callers may use this
function in conjunction with svn_fs_node_created_rev() to perform a
reverse lookup of the mapping of (path, revision) -> node-id that
svn_fs_node_id() performs.
Set @a *revision to the revision in which the node-revision identified
by @a path under @a root was created; that is, to the revision in which
@a path under @a root was last modified. @a *revision will
be set to #SVN_INVALID_REVNUM for uncommitted nodes (i.e. modified nodes
under a transaction root). Note that the root of an unmodified transaction
is not itself considered to be modified; in that case, return the revision
upon which the transaction was based.
Set @a *has_props to TRUE if the node @a path in @a root has properties
and to FALSE if it doesn’t have properties. Perform temporary allocations
in @a scratch_pool.
Set @a *history_p to an opaque node history object which
represents @a path under @a root. @a root must be a revision root.
Allocate the result in @a result_pool and use @a scratch_pool for
temporary allocations.
Set @a *revision to the revision in which the line of history
represented by @a path under @a root originated. Use @a pool for
any temporary allocations. If @a root is a transaction root, @a
*revision will be set to #SVN_INVALID_REVNUM for any nodes newly
added in that transaction (brand new files or directories created
using #svn_fs_make_dir or #svn_fs_make_file).
Set @a *value_p to the value of the property named @a propname of
@a path in @a root. If the node has no property by that name, set
@a *value_p to zero. Allocate the result in @a pool.
Set @a *table_p to the entire property list of @a path in @a root,
as an APR hash table allocated in @a pool. The resulting table maps
property names to pointers to #svn_string_t objects containing the
property value.
Determine how @a path_a under @a root_a and @a path_b under @a root_b
are related and return the result in @a relation. There is no restriction
concerning the roots: They may refer to different repositories, be in
arbitrary revision order and any of them may pertain to a transaction.
@a scratch_pool is used for temporary allocations.
Open a Subversion filesystem located in the directory @a path, and
return a pointer to it in @a *fs_p. If @a fs_config is not @c
NULL, the options it contains modify the behavior of the
filesystem. The interpretation of @a fs_config is specific to the
filesystem back-end. The opened filesystem will be allocated in
@a result_pool may be closed by clearing or destroying that pool.
Use @a scratch_pool for temporary allocations.
@note This function is not guaranteed to work with all filesystem
types. There is currently no un-deprecated equivalent; contact the
Subversion developers if you have a need for it.
Return the path to @a fs’s repository, allocated in @a pool.
@note This is just what was passed to svn_fs_create() or
svn_fs_open() – might be absolute, might not.
Set @a *change to the path change that @a iterator currently points to
and advance the @a iterator. If the change list has been exhausted,
@a change will be set to @c NULL.
Append a textual list of all available FS modules to the stringbuf
@a output. Third-party modules are only included if repository
access has caused them to be loaded.
Cleanup the dead transaction in @a fs whose ID is @a txn_id. Use
@a pool for all allocations. If the transaction is not yet dead,
the error #SVN_ERR_FS_TRANSACTION_NOT_DEAD is returned. (The
caller probably forgot to abort the transaction, or the cleanup
step of that abort failed for some reason.)
Make sure that all completed revision property changes to the filesystem
underlying @a fs are actually visible through @a fs. Use @a scratch_pool
for temporary allocations.
Like svn_fs_copy(), but doesn’t record copy history, and preserves
the PATH. You cannot use svn_fs_copied_from() later to find out
where this copy came from.
Set @a *value_p to the value of the property named @a propname on
revision @a rev in the filesystem @a fs. If @a rev has no property by
that name, set @a *value_p to zero.
Set @a *table_p to the entire property list of revision @a rev in
filesystem @a fs, as an APR hash table allocated in @a pool. The table
maps char * property names to #svn_string_t * values; the names
and values are allocated in @a result_pool. Use @a scratch_pool for
temporary allocations.
Set @a *root_p to the root directory of revision @a rev in filesystem @a fs.
Allocate @a *root_p in a private subpool of @a pool; the root can be
destroyed earlier than @a pool by calling #svn_fs_close_root.
Provide a callback function, @a warning, that @a fs should use to
report (non-fatal) errors. To print an error, the filesystem will call
@a warning, passing it @a warning_baton and the error.
Efficiently deliver the contents of the file @a path in @a root
via @a processor (with @a baton), setting @a *success to @c TRUE
upon doing so. Use @a pool for allocations.
Set @a *value_p to the value of the property named @a propname on
transaction @a txn. If @a txn has no property by that name, set
@a *value_p to zero. Allocate the result in @a pool.
Set @a *table_p to the entire property list of transaction @a txn, as
an APR hash table allocated in @a pool. The resulting table maps property
names to pointers to #svn_string_t objects containing the property value.
Set @a *root_p to the root directory of @a txn. Allocate @a *root_p in a
private subpool of @a pool; the root can be destroyed earlier than @a pool by
calling #svn_fs_close_root.
Upgrade the Subversion filesystem located in the directory @a path
to the latest version supported by this library. Return
#SVN_ERR_FS_UNSUPPORTED_UPGRADE and make no changes to the
filesystem if the requested upgrade is not supported. Use
@a scratch_pool for temporary allocations.
Perform backend-specific data consistency and correctness validations
to the Subversion filesystem (mainly the meta-data) located in the
directory @a path. Use the backend-specific configuration @a fs_config
when opening the filesystem. @a NULL is valid for all backends.
Use @a scratch_pool for temporary allocations.
Perform backend-specific data consistency and correctness validations
of @a root in the Subversion filesystem @a fs. @a root is typically
a revision root (see svn_fs_revision_root()), but may be a
transaction root. Use @a scratch_pool for temporary allocations.
Very basic default error handler: print out error stack @a error to the
stdio stream @a stream, with each error prefixed by @a prefix; quit and
clear @a error iff the @a fatal flag is set. Allocations are performed
in the @a error’s pool.
Very basic default warning handler: print out the error @a error to the
stdio stream @a stream, prefixed by @a prefix. Allocations are
performed in the error’s pool.
Return the appropriate @c svn_mergeinfo_inheritance_t for @a word.
@a word is as returned from svn_inheritance_to_word(). Defaults to
@c svn_mergeinfo_explicit.
Return a constant string expressing @a inherit as an English word,
i.e., “explicit” (default), “inherited”, or “nearest_ancestor”.
The string is not localized, as it may be used for client<->server
communications.
Recursively copy directory @a src into @a dst_parent, as a new entry named
@a dst_basename. If @a dst_basename already exists in @a dst_parent,
return error. @a copy_perms will be passed through to svn_io_copy_file()
when any files are copied. @a src, @a dst_parent, and @a dst_basename are
all utf8-encoded.
Copy @a src to @a dst atomically, in a “byte-for-byte” manner.
Overwrite @a dst if it exists, else create it. Both @a src and @a dst
are utf8-encoded filenames. If @a copy_perms is TRUE, set @a dst’s
permissions to match those of @a src.
Copy symbolic link @a src to @a dst atomically. Overwrite @a dst
if it exists, else create it. Both @a src and @a dst are
utf8-encoded filenames. After copying, the @a dst link will point
to the same thing @a src does.
Examine utf8-encoded @a file to determine if it can be described by a
known (as in, known by this function) Multipurpose Internet Mail
Extension (MIME) type. If so, set @a *mimetype to a character string
describing the MIME type, else set it to @c NULL.
Set @a *is_empty_p to @c TRUE if directory @a path is empty, else to
@c FALSE if it is not empty. @a path must be a directory, and is
utf8-encoded. Use @a pool for temporary allocation.
Copy the file whose basename (or relative path) is @a file within
directory @a src_path to the same basename (or relative path) within
directory @a dest_path. Overwrite the destination file if it already
exists. The destination directory (including any directory
components in @a name) must already exist. Set the destination
file’s permissions to match those of the source. Use @a pool for
memory allocations.
Same as svn_io_dir_make(), but attempts to set the sgid on the
directory on systems that support it. Does not return an error if
the attempt to set the sgid bit fails. On Unix filesystems,
setting the sgid bit on a directory ensures that files and
subdirectories created within inherit group ownership from the
parent instead of from the primary gid.
Wrapper for apr_dir_read(). Ensures that @a finfo->name is
utf8-encoded, which means allocating @a finfo->name in @a pool,
which may or may not be the same as @a finfo’s pool. Use @a pool
for error allocation as well.
Wrapper for apr_dir_remove(). @a dirname is utf8-encoded.
@note This function has this name to avoid confusion with
svn_io_remove_dir2(), which is recursive.
Recursively walk the directory rooted at @a dirname, a
utf8-encoded path, invoking @a walk_func (with @a walk_baton) for
each item in the tree. For a given directory, invoke @a walk_func
on the directory itself before invoking it on any children thereof.
Set the file pointer of the #APR_BUFFERED @a file to @a offset. In
contrast to #svn_io_file_seek, this function will attempt to resize the
internal data buffer to @a block_size bytes and to read data aligned to
multiples of that value. The beginning of the block will be returned
in @a buffer_start, if that is not NULL.
Uses @a scratch_pool for temporary allocations.
Put the md5 checksum of @a file into @a digest.
@a digest points to @c APR_MD5_DIGESTSIZE bytes of storage.
Use @a pool only for temporary allocations.
Lock file at @a lock_file. If @a exclusive is TRUE,
obtain exclusive lock, otherwise obtain shared lock.
Lock will be automatically released when @a pool is cleared or destroyed.
Use @a pool for memory allocations.
Rename and/or move the node (not necessarily a regular file) at
@a from_path to a new path @a to_path within the same filesystem.
In some cases, an existing node at @a to_path will be overwritten.
Set @a *same12 to TRUE if @a file1 and @a file2 have the same
contents, else set it to FALSE. Do the similar for @a *same23
with @a file2 and @a file3, and @a *same13 for @a file1 and @a
file3. The filenames @a file1, @a file2 and @a file3 are
utf8-encoded. Use @a scratch_pool for temporary allocations.
Set @a *different_p12 to non-zero if @a file1 and @a file2 have different
sizes, else set to zero. Do the similar for @a *different_p23 with
@a file2 and @a file3, and @a *different_p13 for @a file1 and @a file3.
The filenames @a file1, @a file2 and @a file3 are utf8-encoded.
Read all of the disk entries in directory @a path, a utf8-encoded
path. Set @a *dirents to a hash mapping dirent names (char *) to
undefined non-NULL values, allocated in @a pool.
Read all of the disk entries in directory @a path, a utf8-encoded
path. Set @a *dirents to a hash mapping dirent names (char *) to
#svn_io_dirent2_t structures, allocated in @a pool.
Examine up to @a len bytes of data in @a buf to determine if the
can be considered binary data, in which case return TRUE.
If the data can be considered plain-text data, return FALSE.
Determine whether a file is executable by the current user.
Set @a *executable to @c TRUE if the file @a path is executable by the
current user, otherwise set it to @c FALSE.
Create directory @a path on the file system, creating intermediate
directories as required, like mkdir -p. Report no error if @a
path already exists. @a path is utf8-encoded.
Create a writable file, with an arbitrary and unique name, in the
directory @a dirpath. Set @a *temp_path to its full path, and set
@a *file to the file handle, both allocated from @a result_pool. Either
@a file or @a temp_path may be @c NULL. If @a file is @c NULL, the file
will be created but not open.
Open a new file (for reading and writing) with a unique name based on
utf-8 encoded @a filename, in the directory @a dirpath. The file handle is
returned in @a *file, and the name, which ends with @a suffix, is returned
in @a *unique_name, also utf8-encoded. Either @a file or @a unique_name
may be @c NULL. If @a file is @c NULL, the file will be created but not
open.
Parse utf8-encoded @a mimetypes_file as a MIME types file (such as
is provided with Apache HTTP Server), and set @a *type_map to a
hash mapping const char * filename extensions to
const char * MIME types.
Read a line from @a file into @a buf, but not exceeding @a *limit bytes.
Does not include newline, instead ‘\0’ is put there.
Length (as in strlen) is returned in @a *limit.
@a buf should be pre-allocated.
@a file should be already opened.
Set @a *version to the integer that starts the file at @a path. If the
file does not begin with a series of digits followed by a newline,
return the error #SVN_ERR_BAD_VERSION_FILE_FORMAT. Use @a pool for
all allocations.
Recursively remove directory @a path. @a path is utf8-encoded.
If @a ignore_enoent is @c TRUE, don’t fail if the target directory
doesn’t exist. Use @a pool for temporary allocations.
Remove file @a path, a utf8-encoded path. This wraps apr_file_remove(),
converting any error to a Subversion error. If @a ignore_enoent is TRUE, and
the file is not present (APR_STATUS_IS_ENOENT returns TRUE), then no
error will be returned.
Run a command to completion, by first calling svn_io_start_cmd() and
then calling svn_io_wait_for_cmd(). The parameters correspond to
the same-named parameters of those two functions.
Invoke the configured @c diff program, with @a user_args (an array
of utf8-encoded @a num_user_args arguments) if they are specified
(that is, if @a user_args is non-NULL), or “-u” if they are not.
If @a user_args is NULL, the value of @a num_user_args is ignored.
Make a file as read-only as the operating system allows.
@a path is the utf8-encoded path to the file. If @a ignore_enoent is
@c TRUE, don’t fail if the target file doesn’t exist.
Make a file as writable as the operating system allows.
@a path is the utf8-encoded path to the file. If @a ignore_enoent is
@c TRUE, don’t fail if the target file doesn’t exist.
@warning On Unix this function will do the equivalent of chmod a+w path.
If this is not what you want you should not use this function, but rather
use apr_file_perms_set().
Sleep to ensure that any files modified after we exit have a different
timestamp than the one we recorded. If @a path is not NULL, check if we
can determine how long we should wait for a new timestamp on the filesystem
containing @a path, an existing file or directory. If @a path is NULL or we
can’t determine the timestamp resolution, sleep until the next second.
Writes @a nbytes bytes from @a *buf to a temporary file inside the same
directory as @a *final_path. Then syncs the temporary file to disk and
closes the file. After this rename the temporary file to @a final_path,
possibly replacing an existing file.
Open a unique file in @a dirpath, and write @a nbytes from @a buf to
the file before flushing it to disk and closing it. Return the name
of the newly created file in @a *tmp_path, allocated in @a pool.
Create (or overwrite) the file at @a path with new contents,
formatted as a non-negative integer @a version followed by a single
newline. On successful completion the file will be read-only. Use
@a pool for all allocations.
Combine one mergeinfo catalog, @a changes_catalog, into another mergeinfo
catalog @a mergeinfo_catalog. If both catalogs have mergeinfo for the same
key, use svn_mergeinfo_merge() to combine the mergeinfos.
Calculate the delta between two mergeinfos, @a mergefrom and @a mergeto
(either or both of which may be @c NULL meaning an empty mergeinfo).
Place the result in @a *deleted and @a *added (neither output argument
may be @c NULL), both allocated in @a result_pool. The resulting
@a *deleted and @a *added will not be null.
Find the intersection of two mergeinfos, @a mergeinfo1 and @a
mergeinfo2, and place the result in @a *mergeinfo, which is (deeply)
allocated in @a result_pool. Temporary allocations will be performed
in @a scratch_pool.
Removes @a eraser (the subtrahend) from @a whiteboard (the
minuend), and places the resulting difference in @a *mergeinfo.
Allocates @a *mergeinfo in @a result_pool. Temporary allocations
will be performed in @a scratch_pool.
Take a mergeinfo in @a mergeinput, and convert it to unparsed
mergeinfo. Set @a *output to the result, allocated in @a pool.
If @a input contains no elements, set @a *output to the empty string.
Return the appropriate node_kind for @a word. @a word is as
returned from svn_node_kind_to_word(). If @a word does not
represent a recognized kind or is @c NULL, return #svn_node_unknown.
Return a constant string expressing @a kind as an English word, e.g.,
“file”, “dir”, etc. The string is not localized, as it may be used for
client<->server communications. If the kind is not recognized, return
“unknown”.
The same as svn_opt_args_to_target_array2() except that, in
addition, if @a extract_revisions is set, then look for trailing
“@rev” syntax on the first two paths. If the first target in @a
*targets_p ends in “@rev”, replace it with a canonicalized version of
the part before “@rev” and replace @a *start_revision with the value
of “rev”. If the second target in @a *targets_p ends in “@rev”,
replace it with a canonicalized version of the part before “@rev”
and replace @a *end_revision with the value of “rev”. Ignore
revision specifiers on any further paths. “rev” can be any form of
single revision specifier, as accepted by svn_opt_parse_revision().
This is the same as svn_opt_args_to_target_array3() except that it
silently ignores paths that have the same name as a working copy
administrative directory.
Pull remaining target arguments from @a os into @a *targets_p,
converting them to UTF-8, followed by targets from @a known_targets
(which might come from, for example, the “–targets” command line
option), which are already in UTF-8.
Print an option @a opt nicely into a @a string allocated in @a pool.
If @a doc is set, include the generic documentation string of @a opt,
localized to the current locale if a translation is available.
Return the first entry from @a option_table whose option code is @a code,
or @c NULL if no match. @a option_table must end with an element whose
every field is zero.
Return pointer to an @c apr_getopt_option_t for the option whose
option code is @a code, or @c NULL if no match. @a option_table must end
with an element whose every field is zero. If @a command is non-NULL,
then return the subcommand-specific option description instead of the
generic one, if a specific description is defined.
Parse all remaining arguments from @a os->argv, return them as
const char * in @a *args_p, without doing any UTF-8 conversion.
Allocate @a *args_p and its values in @a pool.
Parse @a num_args non-target arguments from the list of arguments in
@a os->argv, return them as const char * in @a *args_p, without
doing any UTF-8 conversion. Allocate @a *args_p and its values in @a pool.
Parse revprop key/value pair from @a revprop_spec (name[=value]) into
@a revprops, making copies of both with @a pool. If @a revprops is
@c NULL, allocate a new apr_hash_t in it. @a revprops maps
const char * revprop names to svn_string_t * revprop values for use
with svn_repos_get_commit_editor5 and other get_commit_editor APIs.
Get @a subcommand’s usage from @a table, and print it to @c stdout.
Obtain option usage from @a options_table. If not @c NULL, @a
global_options is a zero-terminated list of global options. Use @a
pool for temporary allocation. @a subcommand may be a canonical
command name or an alias. ### @todo Why does this only print to
@c stdout, whereas svn_opt_print_generic_help() gives us a choice?
Return @c TRUE iff subcommand @a command supports option @a
option_code, else return @c FALSE. If @a global_options is
non-NULL, it is a zero-terminated array, and all subcommands take
the options listed in it.
Convert a human-readable date @a text into an @c apr_time_t, using
@a now as the current time and storing the result in @a result.
The local time zone will be used to compute the appropriate GMT
offset if @a text contains a local time specification. Set @a
matched to indicate whether or not @a text was parsed successfully.
Perform any allocation in @a pool. Return an error iff an internal
error (rather than a simple parse error) occurs.
Given two property hashes (const char *name -> const
svn_string_t *value), deduce the differences between them (from
@a source_props -> @c target_props). Set @a propdiffs to a new array of
@c svn_prop_t structures, with one entry for each property that differs,
including properties that exist in @a source_props or @a target_props but
not both. The @c value field of each entry is that property’s value from
@a target_props or NULL if that property only exists in @a source_props.
Return the value of property @a prop_name as it is in @a properties,
with values const svn_string_t. If @a prop_name is not
in @a properties or @a properties is NULL, return NULL.
Return @c TRUE iff @a prop_name is in the “svn:” name space and is
a known versioned property that is allowed on a directory
(“svn:ignore” or “svn:mergeinfo”, e.g.).
Return @c TRUE iff @a prop_name is in the “svn:” name space and is
a known versioned property that is allowed on a file
(“svn:eol-style” or “svn:mergeinfo”, e.g.).
Return @c TRUE iff @a prop_name is in the “svn:” name space and is a
known versioned property that is allowed on a file and/or on a
directory (“svn:eol-style”, “svn:ignore”, or “svn:mergeinfo”, e.g.).
Return @c TRUE iff @a prop_name represents the name of a Subversion
property. That is, any property name in Subversion’s name space for
versioned or unversioned properties, regardless whether the particular
property name is recognized.
If @a prop_name requires that its value be stored as UTF8/LF in the
repository, then return @c TRUE. Else return @c FALSE. This is for
users of libsvn_client or libsvn_fs, since it their responsibility
to do this translation in both directions. (See
svn_subst_translate_string()/svn_subst_detranslate_string() for
help with this task.)
Return the prop kind of a property named @a prop_name, and
(if @a prefix_len is non-@c NULL) set @a *prefix_len to the length of
the prefix of @a prop_name that was sufficient to distinguish its kind.
Set @a *kind to the node kind associated with @a path at @a revision.
If @a path does not exist under @a revision, set @a *kind to
@c svn_node_none. @a path is relative to the @a session’s parent URL.
Similar to svn_ra_do_diff3(), but taking @c svn_ra_reporter2_t
instead of @c svn_ra_reporter3_t, and therefore only able to report
@c svn_depth_infinity for depths. Perform the diff according to
@a recurse: if TRUE, then @a depth is @c svn_depth_infinity, else
it is @c svn_depth_files.
Similar to svn_ra_do_status2(), but taking @c svn_ra_reporter2_t
instead of @c svn_ra_reporter3_t, and therefore only able to report
@c svn_depth_infinity for depths. The status operation itself is
performed according to @a recurse: if TRUE, then @a depth is
@c svn_depth_infinity, else it is @c svn_depth_immediates.
Similar to svn_ra_do_switch2(), but taking @c svn_ra_reporter2_t
instead of @c svn_ra_reporter3_t, and therefore only able to report
@c svn_depth_infinity for depths. The switch itself is performed
according to @a recurse: if TRUE, then use @c svn_depth_infinity
for @a depth, else use @c svn_depth_files.
Similar to svn_ra_do_update2(), but taking @c svn_ra_reporter2_t
instead of @c svn_ra_reporter3_t; if @a recurse is true, pass @c
svn_depth_infinity for @a depth, else pass @c svn_depth_files; and
with @a send_copyfrom_args always false.
Same as svn_ra_get_commit_editor3(), but with @c revprop_table set
to a hash containing the @c SVN_PROP_REVISION_LOG property set
to the value of @a log_msg.
Set @a *editor and @a *edit_baton to an editor for committing
changes to the repository of @a session, setting the revision
properties from @a revprop_table. The revisions being committed
against are passed to the editor functions, starting with the rev
argument to @c open_root. The path root of the commit is the @a
session’s URL.
Given @a path at revision @a peg_revision, set @a *revision_deleted to the
revision @a path was first deleted, within the inclusive revision range
defined by @a peg_revision and @a end_revision. @a path is relative
to the URL in @a session.
If @a dirents is non @c NULL, set @a *dirents to contain all the entries
of directory @a path at @a revision. The keys of @a dirents will be
entry names (const char *), and the values dirents
(@c svn_dirent_t *). Use @a pool for all allocations.
Fetch the contents and properties of file @a path at @a revision.
@a revision may be SVN_INVALID_REVNUM, indicating that the HEAD
revision should be used. Interpret @a path relative to the URL in
@a session. Use @a pool for all allocations.
Retrieve a subset of the interesting revisions of a file @a path
as seen in revision @a end (see svn_fs_history_prev() for a
definition of “interesting revisions”). Invoke @a handler with
@a handler_baton as its first argument for each such revision.
@a session is an open RA session. Use @a pool for all allocations.
Set @a *inherited_props to a depth-first ordered array of
#svn_prop_inherited_item_t * structures representing the properties
inherited by @a path at @a revision (or the ‘head’ revision if
@a revision is @c SVN_INVALID_REVNUM). Interpret @a path relative to
the URL in @a session. Use @a pool for all allocations. If no
inheritable properties are found, then set @a *inherited_props to
an empty array.
Call @a receiver (with @a receiver_baton) for each segment in the
location history of @a path in @a peg_revision, working backwards in
time from @a start_rev to @a end_rev.
Set @a *locations to the locations (at the repository revisions
@a location_revisions) of the file identified by @a path in
@a peg_revision (passing @c SVN_INVALID_REVNUM is an error).
@a path is relative to the URL to which @a session was opened.
@a location_revisions is an array of @c svn_revnum_t’s.
@a *locations will be a mapping from the revisions to
their appropriate absolute paths. If the file doesn’t exist in a
location_revision, that revision will be ignored.
Similar to svn_ra_get_log2(), but uses @c svn_log_message_receiver_t
instead of @c svn_log_entry_receiver_t. Also, @a
include_merged_revisions is set to @c FALSE and @a revprops is
svn:author, svn:date, and svn:log.
Invoke @a receiver with @a receiver_baton on each log message from
@a start to @a end. @a start may be greater or less than @a end;
this just controls whether the log messages are processed in descending
or ascending revision number order.
Set @a *catalog to a mergeinfo catalog for the paths in @a paths.
If no mergeinfo is available, set @a *catalog to @c NULL. The
requested mergeinfo hashes are for @a paths (which are relative to
@a session’s URL) in @a revision. If one of the paths does not exist
in that revision, return SVN_ERR_FS_NOT_FOUND.
Convert @a url into a path relative to the repository root URL of
the repository with which @a ra_session is associated, setting @a
*rel_path to that value. If @a url is not a child of repository
root URL, return @c SVN_ERR_RA_ILLEGAL_URL.
Convert @a url into a path relative to the session URL of @a ra_session,
setting @a *rel_path to that value. If @a url is not
a child of the session URL, return @c SVN_ERR_RA_ILLEGAL_URL.
Return an RA vtable-@a library which can handle URL. A number of
svn_client_* routines will call this internally, but client apps might
use it too. $a ra_baton is a baton obtained by a call to
svn_ra_init_ra_libs().
Set @a *url to the repository’s root URL, allocated in @a pool.
The value will not include a trailing ‘/’. The returned URL is
guaranteed to be a prefix of the @a session’s URL.
Set @a *has to TRUE if the server represented by @a session has
@a capability (one of the capabilities beginning with
@c “SVN_RA_CAPABILITY_”), else set @a *has to FALSE.
Initialize the RA library. This function must be called before using
any function in this header, except the deprecated APIs based on
@c svn_ra_plugin_t, or svn_ra_version(). This function must not be called
simultaneously in multiple threads. @a pool must live
longer than any open RA sessions.
Lock each path in @a path_revs, which is a hash whose keys are the
paths to be locked, and whose values are the corresponding base
revisions for each path. The keys are (const char *) and the
revisions are (svn_revnum_t *).
Change the root URL of an open @a ra_session to point to a new path in the
same repository. @a url is the new root URL. Use @a pool for
temporary allocations.
Set @a *value to the value of unversioned property @a name attached to
revision @a rev in the repository of @a session. If @a rev has no
property by that name, set @a *value to @c NULL.
Set @a *props to the list of unversioned properties attached to revision
@a rev in the repository of @a session. The hash maps
(const char *) names to (@c svn_string_t *) values.
Set @a *dirent to an @c svn_dirent_t associated with @a path at @a
revision. @a path is relative to the @a session’s parent’s URL.
If @a path does not exist in @a revision, set @a *dirent to NULL.
Remove the repository lock for each path in @a path_tokens.
@a path_tokens is a hash whose keys are the paths to be locked, and
whose values are the corresponding lock tokens for each path. If
the path has no corresponding lock token, or if @a break_lock is TRUE,
then the corresponding value shall be “”.
Calculate the delta between two rangelists consisting of @c
svn_merge_range_t * elements (sorted in ascending order), @a from
and @a to, and place the result in @a *deleted and @a *added
(neither output argument will ever be @c NULL).
Find the intersection of two rangelists consisting of @c
svn_merge_range_t * elements, @a rangelist1 and @a rangelist2, and
place the result in @a *rangelist (which is never @c NULL).
Like svn_rangelist_merge2(), but with @a rangelist as an input/output
argument. This function always allocates a new rangelist in @a pool and
returns its result in @a *rangelist. It does not modify @a *rangelist
in place. If not used carefully, this function can use up a lot of memory
if called in a loop.
Merge two rangelists consisting of @c svn_merge_range_t *
elements, @a rangelist and @a changes, placing the results in
@a rangelist. New elements added to @a rangelist are allocated
in @a result_pool. Either rangelist may be empty.
Take an array of svn_merge_range_t *’s in @a rangelist, and convert it
back to a text format rangelist in @a output. If @a rangelist contains
no elements, sets @a output to the empty string.
Get the basename of the specified canonicalized @a relpath. The
basename is defined as the last component of the relpath. If the @a
relpath has only one component then that is returned. The returned
value will have no slashes in it.
Return a maximum of @a max_components components of @a relpath. This is
an efficient way of calling svn_relpath_dirname() multiple times until only
a specific number of components is left.
Return the relative path part of @a child_relpath that is below
@a parent_relpath, or just “” if @a parent_relpath is equal to
@a child_relpath. If @a child_relpath is not below @a parent_relpath,
return NULL.
Given a @a report_baton constructed by svn_repos_begin_report3(),
abort the report. This function can be called anytime before
svn_repos_finish_report() is called.
Check whether @a user can access @a path in the repository @a
repos_name with the @a required_access. @a authz lists the ACLs to
check against. Set @a *access_granted to indicate if the requested
access is granted.
Construct and return a @a report_baton that will be passed to the
other functions in this section to describe the state of a pre-existing
tree (typically, a working copy). When the report is finished,
@a editor/@a edit_baton will be driven in such a way as to transform the
existing tree to @a revnum and, if @a tgt_path is non-NULL, switch the
reported hierarchy to @a tgt_path.
Return a set of @a capabilities supported by the running Subversion
library and by @a repos. (Capabilities supported by this version of
Subversion but not by @a repos are not listed. This may happen when
svn_repos_upgrade2() has not been called after a software upgrade.)
Set @a access to the access level granted for @a revision in @a
repos, as determined by consulting the @a authz_read_func callback
function and its associated @a authz_read_baton.
Create a new Subversion repository at @a path, building the necessary
directory structure, creating the filesystem, and so on.
Return the repository object in @a *repos_p, allocated in @a pool.
Given @a path which exists at revision @a start in @a fs, set
@a *deleted to the revision @a path was first deleted, within the
inclusive revision range bounded by @a start and @a end. If @a path
does not exist at revision @a start or was not deleted within the
specified range, then set @a *deleted to SVN_INVALID_REVNUM.
Use @a pool for memory allocation.
Similar to svn_repos_dir_delta2(), but if @a recurse is TRUE, pass
#svn_depth_infinity for @a depth, and if @a recurse is FALSE,
pass #svn_depth_files for @a depth.
Use the provided @a editor and @a edit_baton to describe the changes
necessary for making a given node (and its descendants, if it is a
directory) under @a src_root look exactly like @a tgt_path under
@a tgt_root. @a src_entry is the node to update. If @a src_entry
is empty, then compute the difference between the entire tree
anchored at @a src_parent_dir under @a src_root and @a tgt_path
under @a tgt_root. Else, describe the changes needed to update
only that entry in @a src_parent_dir. Typically, callers of this
function will use a @a tgt_path that is the concatenation of @a
src_parent_dir and @a src_entry.
Similar to svn_repos_dump_fs4(), but with @a include_revprops and
@a include_changes both set to @c TRUE and @a filter_func and
@a filter_baton set to @c NULL.
Dump the contents of the filesystem within already-open @a repos into
writable @a dumpstream. If @a dumpstream is
@c NULL, this is effectively a primitive verify. It is not complete,
however; see instead svn_repos_verify_fs3().
Given a @a report_baton constructed by svn_repos_begin_report3(),
finish the report and drive the editor as specified when the report
baton was constructed.
Take an exclusive lock on each of the repositories in @a paths to
prevent commits and then while holding all the locks invoke @a
freeze_func passing @a freeze_baton. Each repository may be readable by
Subversion while frozen, or may be unreadable, depending on which
FS backend the repository uses. Repositories are locked in the
order in which they are specified in the array.
Same as svn_repos_fs_begin_txn_for_commit2(), but with @a revprop_table
set to a hash containing @a author and @a log_msg as the
#SVN_PROP_REVISION_AUTHOR and #SVN_PROP_REVISION_LOG properties,
respectively. @a author and @a log_msg may both be @c NULL.
Like svn_fs_begin_txn(), but use @a revprop_table, a hash mapping
const char * property names to #svn_string_t values, to
set the properties on transaction @a *txn_p. @a repos is the
repository object which contains the filesystem. @a rev, @a
*txn_p, and @a pool are as in svn_fs_begin_txn().
Like svn_fs_begin_txn(), but use @a author to set the corresponding
property on transaction @a *txn_p. @a repos is the repository object
which contains the filesystem. @a rev, @a *txn_p, and @a pool are as in
svn_fs_begin_txn().
Similar to svn_repos_fs_change_rev_prop4(), but with @a old_value_p always
set to @c NULL. (In other words, it is similar to
svn_fs_change_rev_prop().)
Like svn_fs_change_rev_prop2(), but validate the name and value of the
property and invoke the @a repos’s pre- and post-revprop-change hooks
around the change as specified by @a use_pre_revprop_change_hook and
@a use_post_revprop_change_hook (respectively).
Validating wrapper for svn_fs_change_txn_props() (which see for
argument descriptions). Validate properties and their values the
same way svn_repos_fs_change_node_prop() does.
Set @a *inherited_values to a depth-first ordered array of
#svn_prop_inherited_item_t * structures (the path_or_url members of
which are relative filesystem paths) representing the properties
inherited by @a path in @a root. If no properties are inherited,
then set @a *inherited_values to an empty array.
Look up all the locks in and under @a path in @a repos, setting @a
*locks to a hash which maps const char * paths to the
#svn_lock_t locks associated with those paths. Use @a
authz_read_func and @a authz_read_baton to “screen” all returned
locks. That is: do not return any locks on any paths that are
unreadable in HEAD, just silently omit them.
Set @a *value_p to the value of the property named @a propname on
revision @a rev in the filesystem opened in @a repos. If @a rev
has no property by that name, set @a *value_p to zero. Allocate
the result in @a pool.
Set @a *table_p to the entire property list of revision @a rev in
filesystem opened in @a repos, as a hash table allocated in @a
pool. The table maps char * property names to
#svn_string_t * values; the names and values are allocated in @a
pool.
Similar to svn_repos_get_commit_editor5(), but with @a revprop_table
set to a hash containing @a user and @a log_msg as the
#SVN_PROP_REVISION_AUTHOR and #SVN_PROP_REVISION_LOG properties,
respectively. @a user and @a log_msg may both be @c NULL.
Return an @a editor and @a edit_baton to commit changes to the
filesystem of @a repos, beginning at location ‘rev:@a base_path’,
where “rev” is the argument given to open_root().
Retrieve a subset of the interesting revisions of a file @a path in
@a repos as seen in revision @a end. Invoke @a handler with
@a handler_baton as its first argument for each such revision.
@a pool is used for all allocations. See svn_fs_history_prev() for
a discussion of interesting revisions.
Similar to svn_repos_get_fs_build_parser3(), but with @a outstream
in place if a #svn_repos_notify_func_t and baton and with
@a validate_props always FALSE.
Similar to svn_repos_get_fs_build_parser4(), but with @a start_rev
and @a end_rev always passed as #SVN_INVALID_REVNUM, and yielding
the more limited svn_repos_parse_fns2_t.
Set @a *parser and @a *parse_baton to a vtable parser which commits new
revisions to the fs in @a repos. The constructed parser will treat
UUID records in a manner consistent with @a uuid_action. Use @a pool
to operate on the fs.
Same as svn_repos_get_logs4(), but with @a receiver being
#svn_log_message_receiver_t instead of #svn_log_entry_receiver_t.
Also, @a include_merged_revisions is set to @c FALSE and @a revprops is
svn:author, svn:date, and svn:log. If @a paths is empty, nothing
is returned.
Similar to svn_repos_get_logs5 but using a #svn_log_entry_receiver_t
@a receiver to receive revision properties and changed paths through a
single callback and the @a discover_changed_paths flag to control it.
Invoke @a revision_receiver with @a revision_receiver_baton on each
revision from @a start to @a end in @a repos’s filesystem. @a start may
be greater or less than @a end; this just controls whether the log is
processed in descending or ascending revision number order.
Call @a history_func (with @a history_baton) for each interesting
history location in the lifetime of @a path in @a fs, from the
youngest of @a end and @a start to the oldest. Stop processing if
@a history_func returns #SVN_ERR_CEASE_INVOCATION. Only cross
filesystem copy history if @a cross_copies is @c TRUE. And do all
of this in @a pool.
Specify that Subversion should consult the configuration file
located at @a hooks_env_path to determine how to setup the
environment for hook scripts invoked for the repository @a repos.
As a special case, if @a hooks_env_path is @c NULL, look for the
file in its default location within the repository disk structure.
If @a hooks_env_path is not absolute, it specifies a path relative
to the parent of the file’s default location.
Given a @a report_baton constructed by svn_repos_begin_report3(),
record the presence of @a path in the current tree, containing the contents
of @a link_path at @a revision with depth @a depth.
Similar to svn_repos_load_fs3(), but with @a feedback_stream in
place of the #svn_repos_notify_func_t and baton and with
@a validate_props always FALSE.
Read and parse dumpfile-formatted @a dumpstream, reconstructing
filesystem revisions in already-open @a repos, handling uuids in
accordance with @a uuid_action. Use @a pool for all allocation.
Read and parse dumpfile-formatted @a dumpstream, extracting the
revision properties from it and apply them to the already-open
@a repos. Use @a scratch_pool for temporary allocations.
Set @a *editor and @a *edit_baton to an editor that, when driven by
a driver such as svn_repos_replay2(), builds an svn_repos_node_t *
tree representing the delta from @a base_root to @a root in @a
repos’s filesystem.
Return the root node of the linked-list tree generated by driving the
editor (associated with @a edit_baton) created by svn_repos_node_editor().
This is only really useful if used after the editor drive is completed.
Call @a receiver and @a receiver_baton to report successive
location segments in revisions between @a start_rev and @a end_rev
(inclusive) for the line of history identified by the peg-object @a
path in @a peg_revision (and in @a repos).
Return an #svn_repos_path_change_t structure, allocated in @a result_pool,
with all fields initialized to their respective null/none/empty/invalid
values.
Similar to svn_repos_replay2(), but with @a base_dir set to @c “”,
@a low_water_mark set to #SVN_INVALID_REVNUM, @a send_deltas
set to @c FALSE, and @a authz_read_func and @a authz_read_baton
set to @c NULL.
Given a @a report_baton constructed by svn_repos_begin_report3(),
record the presence of @a path, at @a revision with depth @a depth,
in the current tree.
Set @a *dirent to an #svn_dirent_t associated with @a path in @a
root. If @a path does not exist in @a root, set @a *dirent to
NULL. Use @a pool for memory allocation.
Set @a *locations to be a mapping of the revisions to the paths of
the file @a fs_path present at the repository in revision
@a peg_revision, where the revisions are taken out of the array
@a location_revisions.
Upgrade the Subversion repository (and its underlying versioned
filesystem) located in the directory @a path to the latest version
supported by this library. If the requested upgrade is not
supported due to the current state of the repository or it
underlying filesystem, return #SVN_ERR_REPOS_UNSUPPORTED_UPGRADE
or #SVN_ERR_FS_UNSUPPORTED_UPGRADE (respectively) and make no
changes to the repository or filesystem.
Like svn_repos_verify_fs3(), but with @a verify_callback and
@a verify_baton set to @c NULL and with @a check_normalization
and @a metadata_only set to @c FALSE.
Parse NULL-terminated C string @a str as a revision number and
store its value in @a rev. If @a endptr is non-NULL, then the
address of the first non-numeric character in @a str is stored in
it. If there are no digits in @a str, then @a endptr is set (if
non-NULL), and the error #SVN_ERR_REVNUM_PARSE_FAILURE error is
returned. Negative numbers parsed from @a str are considered
invalid, and result in the same error.
Return a generic stream which implements buffered reads and writes.
The stream will preferentially store data in-memory, but may use
disk storage as backup if the amount of data is large.
Allocate the stream in @a result_pool
Return a stream that calculates checksums for all data read
and written. The stream @a stream is used to read and write all data.
The stream and the resulting digests are allocated in @a pool.
Return a stream that decompresses all data read and compresses all
data written. The stream @a stream is used to read and write all
compressed data. All compression data structures are allocated on
@a pool. If compression support is not compiled in then
svn_stream_compressed() returns @a stream unmodified. Make sure you
call svn_stream_close() on the stream returned by this function,
so that all data are flushed and cleaned up.
When a stream supports polling for available data, obtain a boolean
indicating whether data is waiting to be read. If the stream doesn’t
support polling this function returns a #SVN_ERR_STREAM_NOT_SUPPORTED
error.
Set @a *err to a generic stream connected to stderr, allocated in
@a pool. The stream and its underlying APR handle will be closed
when @a pool is cleared or destroyed.
Set @a *in to a generic stream connected to stdin, allocated in
@a pool. If @a buffered is set, APR buffering will be enabled.
The stream and its underlying APR handle will be closed when @a pool
is cleared or destroyed.
Set @a *out to a generic stream connected to stdout, allocated in
@a pool. The stream and its underlying APR handle will be closed
when @a pool is cleared or destroyed.
Return a generic stream which wraps another primary stream,
delaying the “opening” of that stream until the first time the
returned stream is accessed.
Set a @a mark at the current position of a generic @a stream,
which can later be sought back to using svn_stream_seek().
The @a mark is allocated in @a pool.
Create a stream to read the file at @a path. It will be opened using
the APR_BUFFERED and APR_BINARY flag, and APR_OS_DEFAULT for the perms.
If you’d like to use different values, then open the file yourself, and
use the svn_stream_from_aprfile2() interface.
Create a writable stream to a file in the directory @a dirpath.
The file will have an arbitrary and unique name, and the full path
will be returned in @a temp_path. The stream will be returned in
@a stream. Both will be allocated from @a result_pool.
Create a stream to write a file at @a path. The file will be created
using the APR_BUFFERED and APR_BINARY flag, and APR_OS_DEFAULT for the
perms. The file will be created “exclusively”, so if it already exists,
then an error will be thrown. If you’d like to use different values, or
open an existing file, then open the file yourself, and use the
svn_stream_from_aprfile2() interface.
Write to @a stream using a printf-style @a fmt specifier, passed through
apr_psprintf() using memory from @a pool. The resulting string
will be translated to @a encoding before it is sent to @a stream.
Read all currently available upto @a *len into @a buffer. Use
svn_stream_read_full() if you want to wait for the buffer to be filled
or EOF. If the stream doesn’t support limited reads this function will
return an #SVN_ERR_STREAM_NOT_SUPPORTED error.
Allocate @a *stringbuf in @a pool, and read into it one line (terminated
by @a eol) from @a stream. The line-terminator is read from the stream,
but is not added to the end of the stringbuf. Instead, the stringbuf
ends with a usual ‘\0’.
Reset a generic stream back to its origin. (E.g. On a file this would be
implemented as a seek to position 0). This function returns a
#SVN_ERR_STREAM_SEEK_NOT_SUPPORTED error when the stream doesn’t
implement resetting.
Seek to a @a mark in a generic @a stream.
This function returns the #SVN_ERR_STREAM_SEEK_NOT_SUPPORTED error
if the stream doesn’t implement seeking. Passing NULL as @a mark,
seeks to the start of the stream.
Set @a stream’s read functions to @a read_fn and @a read_full_fn. If
@a read_full_fn is NULL a default implementation based on multiple calls
to @a read_fn will be used.
Return a writable stream which, when written to, writes to both of the
underlying streams. Both of these streams will be closed upon closure of
the returned stream; use svn_stream_disown() if this is not the desired
behavior. One or both of @a out1 and @a out2 may be @c NULL. If both are
@c NULL, @c NULL is returned.
Create a new string by printf-style formatting using @c fmt and @a ap.
This is the same as svn_string_createf() except for the different
way of passing the variable arguments.
Read the contents of @a stream into memory, from its current position
to its end, returning the data in @a *result. The stream will be closed
when it has been successfully and completely read.
Create a new string copied from a generic string of bytes, @a bytes, of
length @a size bytes. @a bytes is NOT assumed to be null-terminated, but
the new string will be.
Create a new stringbuf using the given @a str as initial buffer.
Allocate the result in @a pool. In contrast to #svn_stringbuf_create,
the contents of @a str may change when the stringbuf gets modified.
Create a new stringbuf by printf-style formatting using @c fmt and @a ap.
This is the same as svn_stringbuf_createf() except for the different
way of passing the variable arguments.
Sets @a *result to a string containing the contents of the already opened
@a file. Reads from the current position in file to the end. Does not
close the file or reset the cursor position.
Set @a *result to a string containing the contents of @a
filename, which is either “-” (indicating that stdin should be
read) or the utf8-encoded path of a real file.
Read the contents of @a stream into memory, from its current position
to its end, returning the data in @a *result. This function does not
close the @a stream upon completion.
Create a new stringbuf copied from the generic string of bytes, @a bytes,
of length @a size bytes. @a bytes is NOT assumed to be null-terminated,
but the new stringbuf will be.
Return the appropriate tristate for @a word. If @a word is “true”, returns
#svn_tristate_true; if @a word is “false”, returns #svn_tristate_false,
for all other values (including NULL) returns #svn_tristate_unknown.
Prepare to apply a text delta. @a source is a readable generic stream
yielding the source data, @a target is a writable generic stream to
write target data to, and allocation takes place in a sub-pool of
@a pool. On return, @a *handler is set to a window handler function and
@a *handler_baton is set to the value to pass as the @a baton argument to
@a *handler.
Return the md5 digest for the complete fulltext deltified by
@a stream, or @c NULL if @a stream has not yet returned its final
@c NULL window. The digest is allocated in the same memory as @a
STREAM.
Set @a *window to a pointer to the next window from the delta stream
@a stream. When we have completely reconstructed the target string,
set @a *window to zero.
Return a writable generic stream which will parse svndiff-format
data into a text delta, invoking @a handler with @a handler_baton
whenever a new window is ready.
Read and parse one delta window in svndiff format from the
readable stream @a stream and place it in @a *window, allocating
the result in @a pool. The caller must take responsibility for
stripping off the four-byte ‘SVN@<ver@>’ header at the beginning of
the svndiff document before reading the first window, and must
provide the version number (the value of the fourth byte) to each
invocation of this routine with the @a svndiff_version argument.
This function will generate delta windows that turn @a source into
@a target, and pushing these windows into the @a handler window handler
callback (passing @a handler_baton to each invocation).
Send the contents of @a stream to window-handler @a handler/@a baton.
This is effectively a ‘copy’ operation, resulting in delta windows that
make the target equivalent to the stream.
Send the contents of @a string to window-handler @a handler/@a baton.
This is effectively a ‘copy’ operation, resulting in delta windows that
make the target equivalent to the value of @a string.
Read and skip one delta window in svndiff format from the
file @a file. @a pool is used for temporary allocations. The
caller must take responsibility for stripping off the four-byte
‘SVN@<ver@>’ header at the beginning of the svndiff document before
reading or skipping the first window, and must provide the version
number (the value of the fourth byte) to each invocation of this
routine with the @a svndiff_version argument.
Return a writable stream which, when fed target data, will send
delta windows to @a handler/@a handler_baton which transform the
data in @a source to the target data. As usual, the window handler
will receive a NULL window to signify the end of the window stream.
The stream handler functions will read data from @a source as
necessary.
Prepare to produce an svndiff-format diff from text delta windows.
@a output is a writable generic stream to write the svndiff data to.
Allocation takes place in a sub-pool of @a pool. On return, @a *handler
is set to a window handler function and @a *handler_baton is set to
the value to pass as the @a baton argument to @a *handler. The svndiff
version is @a svndiff_version. @a compression_level is the zlib
compression level from 0 (no compression) and 9 (maximum compression).
Return a readable generic stream which will produce svndiff-encoded
text delta from the delta stream @a txstream. @a svndiff_version and
@a compression_level are same as in svn_txdelta_to_svndiff3().
Get the (URI-decoded) basename of the specified canonicalized @a
uri. The basename is defined as the last component of the uri. If
the @a uri is root, return “”. The returned value will have no
slashes in it.
Find the common prefix of the canonicalized uris in @a targets
(an array of const char *’s), and remove redundant uris if @a
remove_redundancies is TRUE.
Return the longest common path shared by two canonicalized uris,
@a uri1 and @a uri2. If there’s no common ancestor, return the
empty path. In order for two URLs to have a common ancestor, they
must (a) have the same protocol (since two URLs with the same path
but different protocols may point at completely different
resources), and (b) share a common ancestor in their path
component, i.e. ‘protocol://’ is not a sufficient ancestor.
Return the URI-decoded relative path of @a child_uri that is below
@a parent_uri, or just “” if @a parent_uri is equal to @a child_uri. If
@a child_uri is not below @a parent_uri, return NULL.
Perform a series of version compatibility checks. Checks if @a
my_version is compatible with each entry in @a checklist. @a
checklist must end with an entry whose label is @c NULL.
Check library version compatibility. Return #TRUE if the client’s
version, given in @a my_version, is compatible with the library
version, provided in @a lib_version.
Return version information for the running program. If @a verbose
is #TRUE, collect extra information that may be expensive to
retrieve (for example, the OS release name, list of shared
libraries, etc.). Use @a pool for all allocations.
Similar to svn_wc_add4(), but with an access baton
and relative path instead of a context and absolute path.
@since New in 1.6.
@deprecated Provided for backward compatibility with the 1.6 API.
Put @a local_abspath under version control by registering it as addition
or copy in the database containing its parent. The new node is scheduled
for addition to the repository below its parent node.
Schedule the single node that exists on disk at @a local_abspath for
addition to the working copy. The added node will have the properties
provided in @a props, or none if that is NULL.
Add @a lock to the working copy for @a local_abspath. If @a
local_abspath is read-only, due to locking properties, make it writable.
Perform temporary allocations in @a scratch_pool.
Add a file to a working copy at @a local_abspath, obtaining the
text-base’s contents from @a new_base_contents, the wc file’s
content from @a new_contents, its unmodified properties from @a
new_base_props and its actual properties from @a new_props. Use
@a wc_ctx for accessing the working copy.
Give up the access baton @a adm_access, and its lock if any. This will
recursively close any batons in the same set that are direct
subdirectories of @a adm_access. Any physical locks will be removed from
the working copy. Lock removal is unconditional, there is no check to
determine if cleanup is required.
Return @c TRUE is the access baton @a adm_access has a write lock,
@c FALSE otherwise. Compared to svn_wc_locked() this is a cheap, fast
function that doesn’t access the filesystem.
Return, in @a *adm_access, a pointer to a new access baton for the working
copy administrative area associated with the directory @a path. If
@a write_lock is TRUE the baton will include a write lock, otherwise the
baton can only be used for read access. If @a path refers to a directory
that is already write locked then the error #SVN_ERR_WC_LOCKED will be
returned. The error #SVN_ERR_WC_NOT_DIRECTORY will be returned if
@a path is not a versioned directory.
Open access batons for @a path and return in @a *anchor_access and
@a *target the anchor and target required to drive an editor. Return
in @a *target_access the access baton for the target, which may be the
same as @a *anchor_access (in which case @a *target is the empty
string, never NULL). All the access batons will be in the
@a *anchor_access set.
Similar to svn_wc_adm_probe_open2(), but with @a tree_lock instead of
@a levels_to_lock. @a levels_to_lock is set to -1 if @a tree_lock
is @c TRUE, else 0.
Checks the working copy to determine the node type of @a path. If
@a path is a versioned directory then the behaviour is like that of
svn_wc_adm_open3(), otherwise, if @a path is a file or does not
exist, then the behaviour is like that of svn_wc_adm_open3() with
@a path replaced by the parent directory of @a path. If @a path is
an unversioned directory, the behaviour is also like that of
svn_wc_adm_open3() on the parent, except that if the open fails,
then the returned #SVN_ERR_WC_NOT_DIRECTORY error refers to @a path,
not to @a path’s parent.
Check the working copy to determine the node type of @a path. If
@a path is a versioned directory then the behaviour is like that of
svn_wc_adm_retrieve(), otherwise, if @a path is a file, an unversioned
directory, or does not exist, then the behaviour is like that of
svn_wc_adm_retrieve() with @a path replaced by the parent directory of
@a path.
Similar to svn_wc_adm_probe_try2(), but with @a tree_lock instead of
@a levels_to_lock. @a levels_to_lock is set to -1 if @a tree_lock
is @c TRUE, else 0.
Return, in @a *adm_access, a pointer to an existing access baton associated
with @a path. @a path must be a directory that is locked as part of the
set containing the @a associated access baton.
Similar to svn_wc_cleanup4() but will always break locks, fix recorded
timestamps, clear the dav cache and vacuum pristines. This function also
doesn’t support notifications.
Recurse from @a local_abspath, cleaning up unfinished tasks. Perform
any temporary allocations in @a scratch_pool. If @a break_locks is TRUE
Any working copy locks under @a local_abspath will be taken over and then
cleared by this function.
WARNING: If @a break_locks is TRUE there is no mechanism that will protect
locks that are still being used.
Given a @a dir_path under version control, decide if one of its entries
(@a entry) is in a state of conflict; return the answers in @a
text_conflicted_p and @a prop_conflicted_p. These pointers must not be
null.
Given @a local_abspath in a dir under version control, decide if it is
in a state of conflict; return the answers in @a *text_conflicted_p, @a
*prop_conflicted_p, and @a *tree_conflicted_p. If one or two of the
answers are uninteresting, simply pass @c NULL pointers for those.
Create a context for the working copy, and return it in @a *wc_ctx. This
context is not associated with a particular working copy, but as operations
are performed, will load the appropriate working copy information.
Copy @a src_abspath to @a dst_abspath, and schedule @a dst_abspath
for addition to the repository, remembering the copy history. @a wc_ctx
is used for accessing the working copy and must contain a write lock for
the parent directory of @a dst_abspath,
Similar to svn_wc_crawl_revisions3, but taking svn_ra_reporter2_t
instead of svn_ra_reporter3_t, and therefore only able to report
#svn_depth_infinity for depths; and taking @a recurse instead of @a
depth; and with @a depth_compatibility_trick always false.
Create a unique temporary file in administrative tmp/ area of
directory @a path. Return a handle in @a *fp and the path
in @a *new_name. Either @a fp or @a new_name can be NULL.
Similar to svn_wc_delete4, but uses an access baton and relative path
instead of a working copy context and absolute path. @a adm_access
must hold a write lock for the parent of @a path.
Similar to svn_wc_diff4(), but with @a changelist_filter passed @c NULL,
and @a depth set to #svn_depth_infinity if @a recurse is TRUE, or
#svn_depth_files if @a recurse is FALSE.
Similar to svn_wc_diff6(), but with a #svn_wc_diff_callbacks3_t argument
instead of #svn_wc_diff_callbacks4_t, @a show_copies_as_adds,
and @a use_git_diff_format set to * @c FALSE.
It also doesn’t allow specifying a cancel function.
Set @a *externals_old and @a *externals_new to hash tables representing
changes to values of the svn:externals property on directories
traversed by @a traversal_info.
Ensure that an administrative area exists for @a local_abspath, so
that @a local_abspath is a working copy subdir based on @a url at @a
revision, with depth @a depth, and with repository UUID @a repos_uuid
and repository root URL @a repos_root_url.
Parse the `entries’ file for @a adm_access and return a hash @a entries,
whose keys are (const char *) entry names and values are
(svn_wc_entry_t *). The hash @a entries, and its keys and
values, are allocated from the pool used to open the @a adm_access
baton (that’s how the entries caching works). @a pool is used for
transient allocations.
Set @a *entry to an entry for @a path, allocated in the access baton pool.
If @a show_hidden is TRUE, return the entry even if it’s in ‘excluded’,
‘deleted’ or ‘absent’ state. Excluded entries are those with their depth
set to #svn_depth_exclude. If @a path is not under revision control, or
if entry is hidden, not scheduled for re-addition, and @a show_hidden is @c
FALSE, then set @a *entry to @c NULL.
Same as svn_wc_external_item2_create() except the pointer to the new
empty item is ‘const’ which is stupid since the next thing you need to do
is fill in its fields.
Beginning at @a local_abspath, crawl to @a depth to discover every path in
or under @a local_abspath which belongs to one of the changelists in @a
changelist_filter (an array of const char * changelist names).
If @a changelist_filter is @c NULL, discover paths with any changelist.
Call @a callback_func (with @a callback_baton) each time a
changelist-having path is discovered.
Get the run-time configured list of ignore patterns from the
#svn_config_t’s in the @a config hash, and store them in @a *patterns.
Allocate @a *patterns and its contents in @a pool.
Similar to svn_wc_get_diff_editor4(), but with @a changelist_filter
passed as @c NULL, and @a depth set to #svn_depth_infinity if @a
recurse is TRUE, or #svn_depth_files if @a recurse is FALSE.
Similar to svn_wc_get_diff_editor6(), but with an access baton and relative
path. @a server_performs_filtering always true and with a
#svn_wc_diff_callbacks3_t instead of #svn_wc_diff_callbacks4_t,
@a show_copies_as_adds, and @a use_git_diff_format set to @c FALSE.
Get the list of ignore patterns from the #svn_config_t’s in the
@a config hash and the local ignore patterns from the directory
at @a local_abspath, using @a wc_ctx, and store them in @a *patterns.
Allocate @a *patterns and its contents in @a result_pool, use @a
scratch_pool for temporary allocations.
Given a @a path to a wc file, return in @a *contents a readonly stream to
the pristine contents of the file that would serve as base content for the
next commit. That means:
Given a @a local_abspath to a file or directory under version control,
discover any local changes made to properties and/or the set of ‘pristine’
properties. @a wc_ctx will be used to access the working copy.
Like svn_wc_get_status_editor3(), but with @a ignore_patterns
provided from the corresponding value in @a config, and @a recurse
instead of @a depth. If @a recurse is TRUE, behave as if for
#svn_depth_infinity; else if @a recurse is FALSE, behave as if for
#svn_depth_immediates.
Same as svn_wc_get_status_editor5, but using #svn_wc_status_func3_t
instead of #svn_wc_status_func4_t. And @a server_performs_filtering
always set to #TRUE.
Similar to svn_wc_get_switch_editor3() but with the
@a allow_unver_obstructions parameter always set to FALSE,
@a preserved_exts set to NULL, @a conflict_func and baton set to NULL,
@a depth_is_sticky set to FALSE, and @a depth set according to @a
recurse: if @a recurse is TRUE, pass #svn_depth_infinity, if
FALSE, pass #svn_depth_files.
Similar to svn_wc_get_switch_editor4, but uses access batons and relative
path instead of a working copy context and svn_wc_traversal_info_t instead
of an externals callback.
Similar to svn_wc_get_update_editor3() but with the @a
allow_unver_obstructions parameter always set to FALSE, @a
conflict_func and baton set to NULL, @a fetch_func and baton set to
NULL, @a preserved_exts set to NULL, @a depth_is_sticky set to
FALSE, and @a depth set according to @a recurse: if @a recurse is
TRUE, pass #svn_depth_infinity, if FALSE, pass #svn_depth_files.
Similar to svn_wc_get_update_editor4, but uses access batons and relative
path instead of a working copy context-abspath pair and
svn_wc_traversal_info_t instead of an externals callback. Also,
@a fetch_func and @a fetch_baton are ignored.
Set @a *has_binary_prop to @c TRUE iff @a path has been marked
with a property indicating that it is non-text (in other words, binary).
@a adm_access is an access baton set that contains @a path.
Return @c TRUE if @a name is the name of the WC administrative
directory. Use @a pool for any temporary allocations. Only works
with base directory names, not paths or URIs.
Return TRUE iff @a name is a ‘normal’ property name. ‘Normal’ is
defined as a user-visible and user-tweakable property that shows up
when you fetch a proplist.
Set @a *wc_root to @c TRUE if @a local_abspath represents a “working copy
root”, @c FALSE otherwise. Here, @a local_abspath is a “working copy root”
if its parent directory is not a WC or if it is switched. Also, a deleted
tree-conflict victim is considered a “working copy root” because it has no
URL.
Mark missing @a path as ‘deleted’ in its @a parent’s list of
entries. @a path should be a directory that is both deleted (via
svn_wc_delete4) and removed (via a system call). This function
should only be called during post-commit processing following a
successful commit editor drive.
Given absolute paths to three fulltexts, merge the differences between
@a left_abspath and @a right_abspath into @a target_abspath.
It may help to know that @a left_abspath, @a right_abspath and @a
target_abspath correspond to “OLDER”, “YOURS”, and “MINE”,
respectively, in the diff3 documentation.
Similar to svn_wc_merge_props(), but no baseprops are given.
Instead, it’s assumed that the incoming propchanges are based
against the working copy’s own baseprops. While this assumption is
correct for ‘svn update’, it’s incorrect for ‘svn merge’, and can
cause flawed behavior. (See issue #2035.)
Given a @a local_abspath under version control, merge an array of @a
propchanges into the path’s existing properties. @a propchanges is
an array of #svn_prop_t objects, and @a baseprops is a hash
representing the original set of properties that @a propchanges is
working against. @a wc_ctx contains a lock for @a local_abspath.
Move @a src_abspath to @a dst_abspath, by scheduling @a dst_abspath
for addition to the repository, remembering the history. Mark @a src_abspath
as deleted after moving.@a wc_ctx is used for accessing the working copy and
must contain a write lock for the parent directory of @a src_abspath and
@a dst_abspath.
Similar to svn_wc_parse_externals_description2(), but returns the
parsed externals in a hash instead of an array. This function
should not be used, as storing the externals in a hash causes their
order of evaluation to be not easily identifiable.
Similar to svn_wc_parse_externals_description3() with @a
canonicalize_url set to @c TRUE, but returns an array of
#svn_wc_external_item_t * objects instead of
#svn_wc_external_item2_t * objects
@note this function has improper expectations around the operation and
execution of other parts of the Subversion WC library. The resulting
coupling makes this interface near-impossible to support. Documentation
has been removed, as a result.
Bump all items in @a queue to @a new_revnum after a commit succeeds.
@a rev_date and @a rev_author are the (server-side) date and author
of the new revision; one or both may be @c NULL.
Set @a *value to the value of property @a name for @a local_abspath,
allocating @a *value in @a result_pool. If no such prop, set @a *value
to @c NULL. @a name may be a regular or wc property; if it is an
entry property, return the error #SVN_ERR_BAD_PROP_KIND. @a wc_ctx
is used to access the working copy.
Set @a *props to a hash table mapping char * names onto
svn_string_t * values for all the regular properties of
@a local_abspath. Allocate the table, names, and values in
@a result_pool. If the node has no properties, then an empty hash
is returned. Use @a wc_ctx to access the working copy, and @a
scratch_pool for temporary allocations.
Similar to svn_wc_prop_set4(), but with a #svn_wc_adm_access_t /
relative path parameter pair, no @a depth parameter, no changelist
filtering (for the depth-based property setting), and no cancellation.
Set property @a name to @a value for @a local_abspath, or if @a value is
NULL, remove property @a name from @a local_abspath. Use @a wc_ctx to
access @a local_abspath.
Set @a *modified_p to non-zero if @a path’s properties are modified
with regard to the base revision, else set @a modified_p to zero.
@a adm_access must be an access baton for @a path.
Recursively change repository references at @a wcroot_abspath
(which is the root directory of a working copy). The pre-change
URL should begin with @a from, and the post-change URL will begin
with @a to. @a validator (and its baton, @a validator_baton), will
be called for the newly generated base URL and calculated repo
root.
Remove @a local_abspath from revision control. @a wc_ctx must
hold a write lock on the parent of @a local_abspath, or if that is a
WC root then on @a local_abspath itself.
Remove any lock from @a local_abspath. If @a local_abspath has a
lock and the locking so specifies, make the file read-only. Don’t
return an error if @a local_abspath didn’t have a lock. Perform temporary
allocations in @a scratch_pool.
Similar to svn_wc_resolved_conflict3(), but without automatic conflict
resolution support, and with @a depth set according to @a recurse:
if @a recurse is TRUE, @a depth is #svn_depth_infinity, else it is
#svn_depth_files.
Similar to svn_wc_resolved_conflict5, but takes an absolute path
and an access baton. This version doesn’t support resolving a specific
property.conflict.
Assuming @a local_abspath is under version control or a tree conflict
victim and in a state of conflict, then take @a local_abspath out
of this state. If @a resolve_text is TRUE then any text conflict is
resolved, if @a resolve_tree is TRUE then any tree conflicts are
resolved. If @a resolve_prop is set to “” all property conflicts are
resolved, if it is set to any other string value, conflicts on that
specific property are resolved and when resolve_prop is NULL, no
property conflicts are resolved.
Similar to svn_wc_revert3(), but with @a changelist_filter passed as @c
NULL, and @a depth set according to @a recursive: if @a recursive
is TRUE, @a depth is #svn_depth_infinity; if FALSE, @a depth is
#svn_depth_empty.
Set @a *result_p to point to a new #svn_wc_revision_status_t structure
containing a summary of the revision range and status of the working copy
at @a local_abspath (not including “externals”). @a local_abspath must
be absolute. Return SVN_ERR_WC_PATH_NOT_FOUND if @a local_abspath is not
a working copy path.
Set @a local_abspath’s ‘changelist’ attribute to @a changelist iff
@a changelist is not @c NULL; otherwise, remove any current
changelist assignment from @a local_abspath. @a changelist may not
be the empty string. Recurse to @a depth.
Associate @a locks, a hash table mapping const char*
absolute repository paths to svn_lock_t objects, with a
@a set_locks_baton returned by an earlier call to
svn_wc_get_status_editor3(). @a repos_root is the repository root URL.
Perform all allocations in @a pool.
Set @a *modified_p to non-zero if @a local_abspath’s text is modified
with regard to the base revision, else set @a *modified_p to zero.
@a local_abspath is the absolute path to the file.
Set @a xlated_path to a translated copy of @a src
or to @a src itself if no translation is necessary.
That is, if @a versioned_file’s properties indicate newline conversion or
keyword expansion, point @a *xlated_path to a copy of @a src
whose newlines and keywords are converted using the translation
as requested by @a flags.
Given a @a local_abspath, transmit all local property
modifications using the appropriate @a editor method (in conjunction
with @a baton). Use @a scratch_pool for any temporary allocation.
Similar to svn_wc_transmit_text_deltas3(), but with a relative path
and adm_access baton, and the checksum output is an MD5 digest instead of
two svn_checksum_t objects.
Send the local modifications for versioned file @a local_abspath (with
matching @a file_baton) through @a editor, then close @a file_baton
afterwards. Use @a scratch_pool for any temporary allocation.
Set @a *depths to a hash table mapping const char *
directory names (directories traversed by @a traversal_info) to
const char * values (the depths of those directories, as
converted by svn_depth_to_word()).
Upgrade the working copy at @a local_abspath to the latest metadata
storage format. @a local_abspath should be an absolute path to the
root of the working copy.
Similar to svn_wc_walk_entries3(), but without cancellation support
or error handling from @a walk_callbacks, and with @a depth always
set to #svn_depth_infinity.
Walk the working copy status of @a local_abspath using @a wc_ctx, by
creating #svn_wc_status3_t structures and sending these through
@a status_func / @a status_baton.
Set @a *cred by prompting the user, allocating @a *cred in @a pool.
@a baton is an implementation-specific closure. @a realm is a string
that can be used in the prompt string.
Set @a *cred by prompting the user, allocating @a *cred in @a pool.
@a baton is an implementation-specific closure. @a realm is a string
identifying the certificate, and can be used in the prompt string.
A user defined callback that subversion will call with a user defined
baton to see if the current operation should be continued. If the operation
should continue, the function should return #SVN_NO_ERROR, if not, it
should return #SVN_ERR_CANCELLED.
Similar to #svn_client_blame_receiver3_t, but with separate author and
date revision properties instead of all revision properties, and without
information about local changes.
Similar to #svn_client_blame_receiver4_t, but with the @a line parameter
as a (const char*) instead of an svn_string_t, and the parameters
@a start_revnum and @a end_revnum contain the start and end revision
number of the entire blame operation, as resolved from the repository
inside svn_client_blame6().
Callback type used by svn_client_blame6() to notify the caller
that line @a line_no of the blamed file was last changed in @a revision
which has the revision properties @a rev_props, and that the contents were
@a line.
The callback invoked by info retrievers. Each invocation
describes @a abspath_or_url with the information present in @a info.
Use @a scratch_pool for all temporary allocation.
The callback invoked by svn_client_patch() before attempting to patch
the target file at @a canon_path_from_patchfile (the path as parsed from
the patch file, but in canonicalized form). The callback can set
@a *filtered to @c TRUE to prevent the file from being patched, or else
must set it to @c FALSE.
Like #svn_delta_path_driver_cb_func2_t but without the @a editor and
@a edit_baton parameters. The user must arrange for the editor to be
passed through @a callback_baton (if required, which it usually is).
And @a path could possibly have a ‘/’ prefix instead of being a relpath;
see the note on svn_delta_path_driver2().
The type of a lock discovery callback function. @a baton is the
value specified in the call to svn_fs_get_locks(); the filesystem
passes it through to the callback. @a lock is a lock structure.
@a pool is a temporary subpool for use by the callback
implementation – it is cleared after invocation of the callback.
The type of a hotcopy notification function. @a start_revision and
@a end_revision indicate the copied revision range. @a baton is the
corresponding baton for the notification function, and @a scratch_pool
can be used for temporary allocations, but will be cleared between
invocations.
The type of a pack notification function. @a shard is the shard being
acted upon; @a action is the type of action being performed. @a baton is
the corresponding baton for the notification function, and @a pool can
be used for temporary allocations, but will be cleared between invocations.
Callback function type used with svn_fs_try_process_file_contents()
that delivers the immutable, non-NULL @a contents of @a len bytes.
@a baton is an implementation-specific closure.
The type of an upgrade notification function. @a number is specifc
to @a action (see #svn_fs_upgrade_notify_action_t); @a action is the
type of action being performed. @a baton is the corresponding baton
for the notification function, and @a scratch_pool can be used for
temporary allocations, but will be cleared between invocations.
The type of a warning callback function. @a baton is the value specified
in the call to svn_fs_set_warning_func(); the filesystem passes it through
to the callback. @a err contains the warning message.
The callback invoked by svn_client_info2(). Each invocation
describes @a path with the information present in @a info. Note
that any fields within @a info may be NULL if information is
unavailable. Use @a pool for all temporary allocation.
A callback invoked by generators of #svn_location_segment_t
objects, used to report information about a versioned object’s
history in terms of its location in the repository filesystem over
time.
Subversion distinguishes among several kinds of properties,
particularly on the client-side. There is no “unknown” kind; if
there’s nothing special about a property name, the default category
is @c svn_prop_regular_kind.
The callback invoked by svn_client_proplist4(). Each invocation
provides the regular and/or inherited properties of @a path, which is
either a working copy path or a URL. If @a prop_hash is not @c NULL, then
it maps explicit const char * property names to
svn_string_t * explicit property values. If @a inherited_props
is not @c NULL, then it is a depth-first ordered array of
#svn_prop_inherited_item_t * structures representing the
properties inherited by @a path. Use @a scratch_pool for all temporary
allocations.
A callback function type for use in @c get_file_revs.
@a baton is provided by the caller, @a path is the pathname of the file
in revision @a rev and @a rev_props are the revision properties.
If @a delta_handler and @a delta_baton are non-NULL, they may be set to a
handler/baton which will be called with the delta between the previous
revision and this one after the return of this callback. They may be
left as NULL/NULL.
@a prop_diffs is an array of svn_prop_t elements indicating the property
delta for this and the previous revision.
@a pool may be used for temporary allocations, but you can’t rely
on objects allocated to live outside of this particular call and the
immediately following calls to @a *delta_handler, if any.
A function type which allows the RA layer to ask about any
customizations to the client name string. This is primarily used
by HTTP-based RA layers wishing to extend the string reported to
Apache/mod_dav_svn via the User-agent HTTP header.
This is a function type which allows the RA layer to fetch the
cached pristine file contents whose checksum is @a checksum, if
any. @a *contents will be a read stream containing those contents
if they are found; NULL otherwise.
This is a function type which allows the RA layer to invalidate
(i.e., remove) wcprops recursively. See the documentation for
@c svn_ra_get_wc_prop_func_t for @a baton, @a path, and @a name.
This is a function type which allows the RA layer to store new
working copy properties as part of a commit. See the comments for
@c svn_ra_get_wc_prop_func_t for @a baton, @a path, and @a name.
The @a value is the value that will be stored for the property; a
@c NULL @a value means the property will be deleted.
This is a function type which allows the RA layer to store new
working copy properties during update-like operations. See the
comments for @c svn_ra_get_wc_prop_func_t for @a baton, @a path, and
@a name. The @a value is the value that will be stored for the property;
a NULL @a value means the property will be deleted.
An array of non-overlapping merge ranges (@c svn_merge_range_t *),
sorted as said by @c svn_sort_compare_ranges(). An empty range list is
represented by an empty array.
Callback type for use with svn_repos_history(). @a path and @a
revision represent interesting history locations in the lifetime
of the path passed to svn_repos_history(). @a baton is the same
baton given to svn_repos_history(). @a pool is provided for the
convenience of the implementor, who should not expect it to live
longer than a single callback call.
Callback for providing notification from the repository.
Returns @c void. Justification: success of an operation is not dependent
upon successful notification of that operation.
A vtable that is driven by svn_repos_parse_dumpstream().
Similar to #svn_repos_parse_fns2_t except that it lacks
the delete_node_property and apply_textdelta callbacks.
Callback type for use with svn_repos_verify_fs3(). @a revision
and @a verify_err are the details of a single verification failure
that occurred during the svn_repos_verify_fs3() call. @a baton is
the same baton given to svn_repos_verify_fs3(). @a scratch_pool is
provided for the convenience of the implementor, who should not
expect it to live longer than a single callback call.
Generic three-state property to represent an unknown value for values
that are just like booleans. The values have been set deliberately to
make tristates disjoint from #svn_boolean_t.
A typedef for a function that will return the md5 checksum of the
fulltext deltified by a #svn_txdelta_stream_t object. Will
return NULL if the final null window hasn’t yet been returned by
the stream. The returned value will be allocated in the same pool
as the stream. @a baton is the baton specified when the stream was
created.
A typedef for a function that will set @a *window to the next
window from a #svn_txdelta_stream_t object. If there are no more
delta windows, NULL will be used. The returned window, if any,
will be allocated in @a pool. @a baton is the baton specified
when the stream was created.
A typedef for a function that opens an #svn_txdelta_stream_t object,
allocated in @a result_pool. @a baton is provided by the caller.
Any temporary allocations may be performed in @a scratch_pool.
A typedef for functions that consume a series of delta windows, for
use in caller-pushes interfaces. Such functions will typically
apply the delta windows to produce some file, or save the windows
somewhere. At the end of the delta window stream, you must call
this function passing zero for the @a window argument.
A simple callback type to wrap svn_ra_get_dir2() for avoiding issue #3569,
where a directory is updated to a revision without some of its children
recorded in the working copy. A future update won’t bring these files in
because the repository assumes they are already there.