Main Page | Modules | Data Structures | File List | Data Fields | Globals

notification callback handling


Typedefs

typedef enum svn_wc_notify_action_t svn_wc_notify_action_t
 The type of action occurring.

typedef enum svn_wc_notify_state_t svn_wc_notify_state_t
 The type of notification that is occurring.

typedef void(* svn_wc_notify_func_t )(void *baton, const char *path, svn_wc_notify_action_t action, svn_node_kind_t kind, const char *mime_type, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, svn_revnum_t revision)
 Notify the world that action has happened to path.


Enumerations

enum  svn_wc_notify_action_t {
  svn_wc_notify_add = 0,
  svn_wc_notify_copy,
  svn_wc_notify_delete,
  svn_wc_notify_restore,
  svn_wc_notify_revert,
  svn_wc_notify_failed_revert,
  svn_wc_notify_resolved,
  svn_wc_notify_skip,
  svn_wc_notify_update_delete,
  svn_wc_notify_update_add,
  svn_wc_notify_update_update,
  svn_wc_notify_update_completed,
  svn_wc_notify_update_external,
  svn_wc_notify_status_completed,
  svn_wc_notify_status_external,
  svn_wc_notify_commit_modified,
  svn_wc_notify_commit_added,
  svn_wc_notify_commit_deleted,
  svn_wc_notify_commit_replaced,
  svn_wc_notify_commit_postfix_txdelta,
  svn_wc_notify_blame_revision
}
 The type of action occurring. More...

enum  svn_wc_notify_state_t {
  svn_wc_notify_state_inapplicable = 0,
  svn_wc_notify_state_unknown,
  svn_wc_notify_state_unchanged,
  svn_wc_notify_state_missing,
  svn_wc_notify_state_obstructed,
  svn_wc_notify_state_changed,
  svn_wc_notify_state_merged,
  svn_wc_notify_state_conflicted
}
 The type of notification that is occurring. More...


Detailed Description

In many cases, the WC library will scan a working copy and make changes. The caller usually wants to know when each of these changes has been made, so that it can display some kind of notification to the user.

These notifications have a standard callback function type, which takes the path of the file that was affected, and a caller- supplied baton.

Note that the callback is a 'void' return -- this is a simple reporting mechanism, rather than an opportunity for the caller to alter the operation of the WC library.

Note also that some of the actions are used across several different Subversion commands. For example, the update actions are also used for checkouts, switches, and merges.


Typedef Documentation

typedef void(* svn_wc_notify_func_t)(void *baton, const char *path, svn_wc_notify_action_t action, svn_node_kind_t kind, const char *mime_type, svn_wc_notify_state_t content_state, svn_wc_notify_state_t prop_state, svn_revnum_t revision)
 

Notify the world that action has happened to path.

path is either absolute or relative to cwd (i.e., not relative to an anchor).

kind, content_state and prop_state are from after action, not before.

If mime_type is non-null, it indicates the mime-type of path. It is always NULL for directories.

revision is SVN_INVALID_REVNUM, except when action is svn_wc_notify_update_completed, in which case revision is the target revision of the update if available, else it is still SVN_INVALID_REVNUM.

Note that if action is svn_wc_notify_update, then path has already been installed, so it is legitimate for an implementation of svn_wc_notify_func_t to examine path in the working copy.

### Design Notes:

The purpose of the kind, mime_type, content_state, and prop_state fields is to provide "for free" information that this function is likely to want, and which it would otherwise be forced to deduce via expensive operations such as reading entries and properties. However, if the caller does not have this information, it will simply pass the corresponding `*_unknown' values, and it is up to the implementation how to handle that (i.e., whether or not to attempt deduction, or just to punt and give a less informative notification).

Recommendation: callers of svn_wc_notify_func_t should avoid invoking it multiple times on the same path within a given operation, and implementations should not bother checking for such duplicate calls. For example, in an update, the caller should not invoke the notify func on receiving a prop change and then again on receiving a text change. Instead, wait until all changes have been received, and then invoke the notify func once (from within an svn_delta_editor_t's close_file(), for example), passing the appropriate content_state and prop_state flags.

Definition at line 448 of file svn_wc.h.


Enumeration Type Documentation

enum svn_wc_notify_action_t
 

The type of action occurring.

Enumeration values:
svn_wc_notify_add  Adding a path to revision control.
svn_wc_notify_copy  Copying a versioned path.
svn_wc_notify_delete  Deleting a versioned path.
svn_wc_notify_restore  Restoring a missing path from the pristine text-base.
svn_wc_notify_revert  Reverting a modified path.
svn_wc_notify_failed_revert  A revert operation has failed.
svn_wc_notify_resolved  Resolving a conflict.
svn_wc_notify_skip  Skipping a path.
svn_wc_notify_update_delete  Got a delete in an update.
svn_wc_notify_update_add  Got an add in an update.
svn_wc_notify_update_update  Got any other action in an update.
svn_wc_notify_update_completed  The last notification in an update (including updates of externals).
svn_wc_notify_update_external  Updating an external module.
svn_wc_notify_status_completed  The last notification in a status (including status on externals).
svn_wc_notify_status_external  Running status on an external module.
svn_wc_notify_commit_modified  Committing a modification.
svn_wc_notify_commit_added  Committing an addition.
svn_wc_notify_commit_deleted  Committing a deletion.
svn_wc_notify_commit_replaced  Committing a replacement.
svn_wc_notify_commit_postfix_txdelta  Transmitting post-fix text-delta data for a file.
svn_wc_notify_blame_revision  Processed a single revision's blame.

Definition at line 312 of file svn_wc.h.

enum svn_wc_notify_state_t
 

The type of notification that is occurring.

Enumeration values:
svn_wc_notify_state_unknown  Notifier doesn't know or isn't saying.
svn_wc_notify_state_unchanged  The state did not change.
svn_wc_notify_state_missing  The item wasn't present.
svn_wc_notify_state_obstructed  An unversioned item obstructed work.
svn_wc_notify_state_changed  Pristine state was modified.
svn_wc_notify_state_merged  Modified state had mods merged in.
svn_wc_notify_state_conflicted  Modified state got conflicting mods.

Definition at line 380 of file svn_wc.h.


Generated on Mon Oct 18 17:33:15 2004 for Subversion by doxygen 1.3.5