racallback.h File Reference

The cb__record_changes() and other callback functions header file. More...

#include <subversion-1/svn_ra.h>
Include dependency graph for racallback.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

svn_error_t * cb__init (apr_pool_t *pool)
 Initialize the callback functions.
int cb__record_changes (struct estat *root, svn_revnum_t target, apr_pool_t *pool)
 A change-recording editor.
int cb__record_changes_mixed (struct estat *root, svn_revnum_t target, char *other_paths[], svn_revnum_t other_revs, apr_pool_t *pool)
 Like cb__record_changes(), but allowing mixed reporting.
int cb__add_entry (struct estat *dir, const char *utf8_path, char **loc_path, const char *utf8_copy_path, svn_revnum_t copy_rev, int mode, int *has_existed, int may_create, void **new)
 This function adds a new entry below dir, setting it to FS_NEW or FS_REPLACED.
int cb__does_path_exist (svn_ra_session_t *session, char *path, svn_revnum_t rev, int *exists, apr_pool_t *pool)
 Checks whether a given remote path exists.
int cb__remove_from_url (struct estat *root, struct url_t *to_remove, int *was_changed)
 Removes all entries belonging to to_remove from the tree root.
int cb__remove_url (struct estat *root, struct url_t *to_remove)
 Remove all entries from the given URL, and mark it for deletion.

Variables

struct svn_ra_callbacks_t cb__cb_table
 The callback table for cb__record_changes().

Detailed Description

The cb__record_changes() and other callback functions header file.

Definition in file racallback.h.


Function Documentation

int cb__add_entry ( struct estat dir,
const char *  utf8_path,
char **  loc_path,
const char *  utf8_copy_path,
svn_revnum_t  copy_rev,
int  mode,
int *  has_existed,
int  may_create,
void **  new 
)

This function adds a new entry below dir, setting it to FS_NEW or FS_REPLACED.

This function adds a new entry below dir, setting it to FS_NEW or FS_REPLACED.

was not found).

If mode doesn't include some permission bits, like 0700 or 0600, a default value is chosen.

If it didn't exist, or if this is a higher priority URL, the parents get FS_CHILD_CHANGED set.

path gets set (if not NULL) to utf8_path in local encoding.

Definition at line 130 of file racallback.c.

References estat::by_inode, estat::by_name, current_url, DEBUGP, estat::decoder, estat::entry_count, filename, FS_CHANGED, FS_NEW, FS_REMOVED, sstat_t::gid, estat::has_orig_md5, hlp__lstat(), hlp__strdup(), hlp__utf82local(), estat::local_mode_packed, estat::md5, sstat_t::mode, MODE_T_to_PACKED, sstat_t::mtim, estat::name, estat::new_rev_mode_packed, estat::old_rev_mode_packed, ops__allocate(), ops__find_entry_byname(), ops__get_filename(), ops__make_shadow_entry(), ops__mark_parent_cc, ops__new_entries(), PACKED_to_MODE_T, estat::parent, estat::remote_status, S_IFUNDEF, SHADOWED_BY_REMOTE, estat::st, st__type_string(), STOPIF, STOPIF_CODE_ERR, estat::strings, sstat_t::uid, estat::url, and url__current_has_precedence().

Referenced by cb___add_directory(), cb___add_file(), cb___open_directory(), cb___open_file(), sync___recurse(), up__add_directory(), and up__add_file().

Here is the call graph for this function:

Here is the caller graph for this function:

int cb__does_path_exist ( svn_ra_session_t *  session,
char *  path,
svn_revnum_t  rev,
int *  exists,
apr_pool_t *  pool 
)

Checks whether a given remote path exists.

Checks whether a given remote path exists.

We need a valid revision number, SVN_INVALID_REVNUM (for HEAD) isn't.

Definition at line 1010 of file racallback.c.

References STOPIF_SVNERR.

Referenced by url__open_session().

Here is the caller graph for this function:

svn_error_t* cb__init ( apr_pool_t *  pool  ) 

Initialize the callback functions.

Todo:
Authentication providers.

Definition at line 36 of file racallback.c.

References BUG_ON, cb__cb_table, hlp__get_svn_config(), OPT__AUTHOR, OPT__CONFIG_DIR, RETURN_SVNERR, STOPIF, and STOPIF_SVNERR.

Referenced by main().

Here is the call graph for this function:

Here is the caller graph for this function:

int cb__record_changes ( struct estat root,
svn_revnum_t  target,
apr_pool_t *  pool 
)

A change-recording editor.

A change-recording editor.

Just a proxy; calls cb__record_changes_mixed() with the root, target and pool, and default values for the rest.

Definition at line 859 of file racallback.c.

References cb__record_changes_mixed(), and STOPIF.

Referenced by df__work(), rev__work(), sync__work(), and up__work().

Here is the call graph for this function:

Here is the caller graph for this function:

int cb__record_changes_mixed ( struct estat root,
svn_revnum_t  target,
char *  other_paths[],
svn_revnum_t  other_revs,
apr_pool_t *  pool 
)

Like cb__record_changes(), but allowing mixed reporting.

Like cb__record_changes(), but allowing mixed reporting.

Calls the svn libraries and records which entries would be changed on this update on current_url.

Parameters:
root The root entry of this wc tree
target The target revision. SVN_INVALID_REVNUM is not valid.
other_paths A NULL-terminated list of paths that are sent to the svn_ra_reporter2_t::set_path().
other_revs The revision to be sent for other_paths.
pool An APR-pool.

When a non-directory entry gets replaced by a directory, its MD5 is lost (because the directory is initialized to entry_count=0 , by_inode=by_name=NULL ); that should not matter, since we have modification flags in entry_status .

If a non-directory gets replaced by a directory, entry_count and by_inode are kept - we need them for up__rmdir() to remove known child entries.

Please note that it's not possible to run invisible entries (that are not seen because some higher priority URL overlays them) to run as baton==NULL (although that would save quite a bit of url__current_has_precedence() calls), because it's possible that some file in a directory below can be seen.

other_paths is a NULL -terminated list of pathnames (which may have the "./" in front, ie. the normalized paths) that are to be reported at revision other_revs.

If other_paths is NULL, or doesn't include an "." entry, the WC root is reported to be at current_url->current_rev or, if this is 0, to be at target, but empty.

Definition at line 905 of file racallback.c.

References cb___change_recorder, cb___dest_rev, cb___report_path_rev(), url_t::current_rev, current_url, DEBUGP, global_pool, PATH_SEPARATOR, url_t::session, STOPIF, and STOPIF_SVNERR.

Referenced by cb__record_changes(), and df__work().

Here is the call graph for this function:

Here is the caller graph for this function:

int cb__remove_from_url ( struct estat root,
struct url_t to_remove,
int *  was_changed 
)

Removes all entries belonging to to_remove from the tree root.

Removes all entries belonging to to_remove from the tree root.

While recursion we look for the highest priority URL in the children (within each level); if there is one, we mark the directory as belonging to that URL.

Will be easier with mixed-WC operation; currently it's not correct if there are overlayed non-directory entries.

Definition at line 825 of file racallback.c.

References cb___remover(), url_t::current_rev, and STOPIF.

Referenced by cb___delete_entry().

Here is the call graph for this function:

Here is the caller graph for this function:

int cb__remove_url ( struct estat root,
struct url_t to_remove 
)

Remove all entries from the given URL, and mark it for deletion.

Definition at line 841 of file racallback.c.

References cb___remover(), url_t::current_rev, STOPIF, and url__must_write_defs.

Referenced by up__work().

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

struct svn_ra_callbacks_t cb__cb_table

The callback table for cb__record_changes().

Definition at line 92 of file racallback.c.

Referenced by cb__init(), and url__open_session().


Generated for fsvs by  doxygen 1.6.1