• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files

svn_wc.h

Go to the documentation of this file.
00001 /**
00002  * @copyright
00003  * ====================================================================
00004  * Copyright (c) 2000-2007 CollabNet.  All rights reserved.
00005  *
00006  * This software is licensed as described in the file COPYING, which
00007  * you should have received as part of this distribution.  The terms
00008  * are also available at http://subversion.tigris.org/license-1.html.
00009  * If newer versions of this license are posted there, you may use a
00010  * newer version instead, at your option.
00011  *
00012  * This software consists of voluntary contributions made by many
00013  * individuals.  For exact contribution history, see the revision
00014  * history and logs, available at http://subversion.tigris.org/.
00015  * ====================================================================
00016  * @endcopyright
00017  *
00018  * @file svn_wc.h
00019  * @brief Subversion's working copy library
00020  *
00021  * Requires:
00022  *            - A working copy
00023  *
00024  * Provides:
00025  *            - Ability to manipulate working copy's versioned data.
00026  *            - Ability to manipulate working copy's administrative files.
00027  *
00028  * Used By:
00029  *            - Clients.
00030  */
00031 
00032 #ifndef SVN_WC_H
00033 #define SVN_WC_H
00034 
00035 
00036 #include <apr.h>
00037 #include <apr_pools.h>
00038 #include <apr_tables.h>
00039 #include <apr_hash.h>
00040 
00041 #include "svn_types.h"
00042 #include "svn_string.h"
00043 #include "svn_delta.h"
00044 #include "svn_error.h"
00045 #include "svn_opt.h"
00046 #include "svn_ra.h"    /* for svn_ra_reporter_t type */
00047 
00048 #ifdef __cplusplus
00049 extern "C" {
00050 #endif /* __cplusplus */
00051 
00052 
00053 /**
00054  * Get libsvn_wc version information.
00055  *
00056  * @since New in 1.1.
00057  */
00058 const svn_version_t *svn_wc_version(void);
00059 
00060 /**
00061  * @defgroup svn_wc  Working copy management
00062  * @{
00063  */
00064 
00065 /** Flags for use with svn_wc_translated_file2
00066  *
00067  * @defgroup translate_flags Translation flags
00068  *
00069  * @{
00070  */
00071 
00072   /** Translate from Normal Form.
00073    *
00074    * The working copy text bases and repository files are stored
00075    * in normal form.  Some files' contents - or ever representation -
00076    * differs between the working copy and the normal form.  This flag
00077    * specifies to take the latter form as input and transform it
00078    * to the former.
00079    *
00080    * Either this flag or @c SVN_WC_TRANSLATE_TO_NF should be specified,
00081    * but not both.
00082    */
00083 #define SVN_WC_TRANSLATE_FROM_NF                 0x00000000
00084 
00085   /** Translate to Normal Form.
00086    *
00087    * Either this flag or @c SVN_WC_TRANSLATE_FROM_NF should be specified,
00088    * but not both.
00089    */
00090 #define SVN_WC_TRANSLATE_TO_NF                   0x00000001
00091 
00092   /** Force repair of eol styles, making sure the output file consistently
00093    * contains the one eol style as specified by the svn:eol-style
00094    * property and the required translation direction.
00095    *
00096    */
00097 #define SVN_WC_TRANSLATE_FORCE_EOL_REPAIR        0x00000002
00098 
00099   /** Don't register a pool cleanup to delete the output file */
00100 #define SVN_WC_TRANSLATE_NO_OUTPUT_CLEANUP       0x00000004
00101 
00102   /** Guarantee a new file is created on successful return.
00103    * The default shortcuts translation by returning the path
00104    * of the untranslated file when no translation is required.
00105    */
00106 #define SVN_WC_TRANSLATE_FORCE_COPY              0x00000008
00107 
00108   /** Use a non-wc-local tmp directory for creating output files,
00109    * instead of in the working copy admin tmp area which is the default.
00110    *
00111    * @since New in 1.4.
00112    */
00113 #define SVN_WC_TRANSLATE_USE_GLOBAL_TMP          0x00000010
00114 
00115 /** @} */
00116 
00117 
00118 /* Locking/Opening/Closing */
00119 
00120 /** Baton for access to a working copy administrative area.
00121  *
00122  * One day all such access will require a baton, we're not there yet.
00123  *
00124  * Access batons can be grouped into sets, by passing an existing open
00125  * baton when opening a new baton.  Given one baton in a set, other batons
00126  * may be retrieved.  This allows an entire hierarchy to be locked, and
00127  * then the set of batons can be passed around by passing a single baton.
00128  */
00129 typedef struct svn_wc_adm_access_t svn_wc_adm_access_t;
00130 
00131 
00132 /**
00133  * Return, in @a *adm_access, a pointer to a new access baton for the working
00134  * copy administrative area associated with the directory @a path.  If
00135  * @a write_lock is TRUE the baton will include a write lock, otherwise the
00136  * baton can only be used for read access.  If @a path refers to a directory
00137  * that is already write locked then the error @c SVN_ERR_WC_LOCKED will be
00138  * returned.  The error @c SVN_ERR_WC_NOT_DIRECTORY will be returned if
00139  * @a path is not a versioned directory.
00140  *
00141  * If @a associated is an open access baton then @a adm_access will be added
00142  * to the set containing @a associated.  @a associated can be @c NULL, in
00143  * which case @a adm_access is the start of a new set.
00144  *
00145  * @a levels_to_lock specifies how far to lock.  Zero means just the specified
00146  * directory.  Any negative value means to lock the entire working copy
00147  * directory hierarchy under @a path.  A positive value indicates the number of
00148  * levels of directories to lock -- 1 means just immediate subdirectories, 2
00149  * means immediate subdirectories and their subdirectories, etc.  All the
00150  * access batons will become part of the set containing @a adm_access.  This
00151  * is an all-or-nothing option, if it is not possible to lock all the
00152  * requested directories then an error will be returned and @a adm_access will
00153  * be invalid, with the exception that subdirectories of @a path that are
00154  * missing from the physical filesystem will not be locked and will not cause
00155  * an error.  The error @c SVN_ERR_WC_LOCKED will be returned if a
00156  * subdirectory of @a path is already write locked.
00157  *
00158  * If @a cancel_func is non-NULL, call it with @a cancel_baton to determine
00159  * if the client has cancelled the operation.
00160  *
00161  * @a pool will be used to allocate memory for the baton and any subsequently
00162  * cached items.  If @a adm_access has not been closed when the pool is
00163  * cleared, it will be closed automatically at that point, and removed from
00164  * its set.  A baton closed in this way will not remove physical locks from
00165  * the working copy if cleanup is required.
00166  *
00167  * The first baton in a set, with @a associated passed as @c NULL, must have
00168  * the longest lifetime of all the batons in the set.  This implies it must be
00169  * the root of the hierarchy.
00170  *
00171  * @since New in 1.2.
00172  */
00173 svn_error_t *
00174 svn_wc_adm_open3(svn_wc_adm_access_t **adm_access,
00175                  svn_wc_adm_access_t *associated,
00176                  const char *path,
00177                  svn_boolean_t write_lock,
00178                  int levels_to_lock,
00179                  svn_cancel_func_t cancel_func,
00180                  void *cancel_baton,
00181                  apr_pool_t *pool);
00182 
00183 /**
00184  * Similar to svn_wc_adm_open3(), but without cancellation support.
00185  *
00186  * @deprecated Provided for backward compatibility with the 1.1 API.
00187  */
00188 svn_error_t *
00189 svn_wc_adm_open2(svn_wc_adm_access_t **adm_access,
00190                  svn_wc_adm_access_t *associated,
00191                  const char *path,
00192                  svn_boolean_t write_lock,
00193                  int levels_to_lock,
00194                  apr_pool_t *pool);
00195 
00196 /**
00197  * Similar to svn_wc_adm_open2(), but with @a tree_lock instead of
00198  * @a levels_to_lock.  @a levels_to_lock is set to -1 if @a tree_lock
00199  * is @c TRUE, else 0.
00200  *
00201  * @deprecated Provided for backward compatibility with the 1.0 API.
00202  */
00203 svn_error_t *
00204 svn_wc_adm_open(svn_wc_adm_access_t **adm_access,
00205                 svn_wc_adm_access_t *associated,
00206                 const char *path,
00207                 svn_boolean_t write_lock,
00208                 svn_boolean_t tree_lock,
00209                 apr_pool_t *pool);
00210 
00211 /**
00212  * Checks the working copy to determine the node type of @a path.  If
00213  * @a path is a versioned directory then the behaviour is like that of
00214  * svn_wc_adm_open3(), otherwise, if @a path is a file or does not
00215  * exist, then the behaviour is like that of svn_wc_adm_open3() with
00216  * @a path replaced by the parent directory of @a path.  If @a path is
00217  * an unversioned directory, the behaviour is also like that of
00218  * svn_wc_adm_open3() on the parent, except that if the open fails,
00219  * then the returned SVN_ERR_WC_NOT_DIRECTORY error refers to @a path,
00220  * not to @a path's parent.
00221  *
00222  * @since New in 1.2.
00223  */
00224 svn_error_t *
00225 svn_wc_adm_probe_open3(svn_wc_adm_access_t **adm_access,
00226                        svn_wc_adm_access_t *associated,
00227                        const char *path,
00228                        svn_boolean_t write_lock,
00229                        int levels_to_lock,
00230                        svn_cancel_func_t cancel_func,
00231                        void *cancel_baton,
00232                        apr_pool_t *pool);
00233 
00234 /**
00235  * Similar to svn_wc_adm_probe_open3() without the cancel
00236  * functionality.
00237  *
00238  * @deprecated Provided for backward compatibility with the 1.1 API.
00239  */
00240 svn_error_t *
00241 svn_wc_adm_probe_open2(svn_wc_adm_access_t **adm_access,
00242                        svn_wc_adm_access_t *associated,
00243                        const char *path,
00244                        svn_boolean_t write_lock,
00245                        int levels_to_lock,
00246                        apr_pool_t *pool);
00247 
00248 /**
00249  * Similar to svn_wc_adm_probe_open2(), but with @a tree_lock instead of
00250  * @a levels_to_lock.  @a levels_to_lock is set to -1 if @a tree_lock
00251  * is @c TRUE, else 0.
00252  *
00253  * @deprecated Provided for backward compatibility with the 1.0 API.
00254  */
00255 svn_error_t *
00256 svn_wc_adm_probe_open(svn_wc_adm_access_t **adm_access,
00257                       svn_wc_adm_access_t *associated,
00258                       const char *path,
00259                       svn_boolean_t write_lock,
00260                       svn_boolean_t tree_lock,
00261                       apr_pool_t *pool);
00262 
00263 /**
00264  * Open access batons for @a path and return in @a *anchor_access and
00265  * @a *target the anchor and target required to drive an editor.  Return
00266  * in @a *target_access the access baton for the target, which may be the
00267  * same as @a *anchor_access.  All the access batons will be in the
00268  * @a *anchor_access set.
00269  *
00270  * @a levels_to_lock determines the levels_to_lock used when opening
00271  * @a path if @a path is a versioned directory, @a levels_to_lock is
00272  * ignored otherwise.  If @a write_lock is  @c TRUE the access batons
00273  * will hold write locks.
00274  *
00275  * If @a cancel_func is non-NULL, call it with @a cancel_baton to determine
00276  * if the client has cancelled the operation.
00277  *
00278  * This function is essentially a combination of svn_wc_adm_open3() and
00279  * svn_wc_get_actual_target(), with the emphasis on reducing physical IO.
00280  *
00281  * @since New in 1.2.
00282  */
00283 svn_error_t *
00284 svn_wc_adm_open_anchor(svn_wc_adm_access_t **anchor_access,
00285                        svn_wc_adm_access_t **target_access,
00286                        const char **target,
00287                        const char *path,
00288                        svn_boolean_t write_lock,
00289                        int levels_to_lock,
00290                        svn_cancel_func_t cancel_func,
00291                        void *cancel_baton,
00292                        apr_pool_t *pool);
00293 
00294 /** Return, in @a *adm_access, a pointer to an existing access baton associated
00295  * with @a path.  @a path must be a directory that is locked as part of the
00296  * set containing the @a associated access baton.
00297  *
00298  * If the requested access baton is marked as missing in, or is simply
00299  * absent from, @a associated, return SVN_ERR_WC_NOT_LOCKED.
00300  *
00301  * @a pool is used only for local processing, it is not used for the batons.
00302  */
00303 svn_error_t *
00304 svn_wc_adm_retrieve(svn_wc_adm_access_t **adm_access,
00305                     svn_wc_adm_access_t *associated,
00306                     const char *path,
00307                     apr_pool_t *pool);
00308 
00309 /** Check the working copy to determine the node type of @a path.  If
00310  * @a path is a versioned directory then the behaviour is like that of
00311  * svn_wc_adm_retrieve(), otherwise, if @a path is a file, an unversioned
00312  * directory, or does not exist, then the behaviour is like that of
00313  * svn_wc_adm_retrieve() with @a path replaced by the parent directory of
00314  * @a path.
00315  */
00316 svn_error_t *
00317 svn_wc_adm_probe_retrieve(svn_wc_adm_access_t **adm_access,
00318                           svn_wc_adm_access_t *associated,
00319                           const char *path,
00320                           apr_pool_t *pool);
00321 
00322 /**
00323  * Try various ways to obtain an access baton for @a path.
00324  *
00325  * First, try to obtain @a *adm_access via svn_wc_adm_probe_retrieve(),
00326  * but if this fails because @a associated can't give a baton for
00327  * @a path or @a path's parent, then try svn_wc_adm_probe_open3(),
00328  * this time passing @a write_lock and @a levels_to_lock.  If there is
00329  * still no access because @a path is not a versioned directory, then
00330  * just set @a *adm_access to NULL and return success.  But if it is
00331  * because @a path is locked, then return the error @c SVN_ERR_WC_LOCKED,
00332  * and the effect on @a *adm_access is undefined.  (Or if the attempt
00333  * fails for any other reason, return the corresponding error, and the
00334  * effect on @a *adm_access is also undefined.)
00335  *
00336  * If svn_wc_adm_probe_open3() succeeds, then add @a *adm_access to
00337  * @a associated.
00338  *
00339  * If @a cancel_func is non-NULL, call it with @a cancel_baton to determine
00340  * if the client has cancelled the operation.
00341  *
00342  * Use @a pool only for local processing, not to allocate @a *adm_access.
00343  *
00344  * @since New in 1.2.
00345  */
00346 svn_error_t *
00347 svn_wc_adm_probe_try3(svn_wc_adm_access_t **adm_access,
00348                       svn_wc_adm_access_t *associated,
00349                       const char *path,
00350                       svn_boolean_t write_lock,
00351                       int levels_to_lock,
00352                       svn_cancel_func_t cancel_func,
00353                       void *cancel_baton,
00354                       apr_pool_t *pool);
00355 
00356 /**
00357  * Similar to svn_wc_adm_probe_try3() without the cancel
00358  * functionality.
00359  *
00360  * @deprecated Provided for backward compatibility with the 1.1 API.
00361  */
00362 svn_error_t *
00363 svn_wc_adm_probe_try2(svn_wc_adm_access_t **adm_access,
00364                       svn_wc_adm_access_t *associated,
00365                       const char *path,
00366                       svn_boolean_t write_lock,
00367                       int levels_to_lock,
00368                       apr_pool_t *pool);
00369 
00370 /**
00371  * Similar to svn_wc_adm_probe_try2(), but with @a tree_lock instead of
00372  * @a levels_to_lock.  @a levels_to_lock is set to -1 if @a tree_lock
00373  * is @c TRUE, else 0.
00374  *
00375  * @deprecated Provided for backward compatibility with the 1.0 API.
00376  */
00377 svn_error_t *
00378 svn_wc_adm_probe_try(svn_wc_adm_access_t **adm_access,
00379                      svn_wc_adm_access_t *associated,
00380                      const char *path,
00381                      svn_boolean_t write_lock,
00382                      svn_boolean_t tree_lock,
00383                      apr_pool_t *pool);
00384 
00385 
00386 /** Give up the access baton @a adm_access, and its lock if any. This will
00387  * recursively close any batons in the same set that are direct
00388  * subdirectories of @a adm_access.  Any physical locks will be removed from
00389  * the working copy.  Lock removal is unconditional, there is no check to
00390  * determine if cleanup is required.
00391  */
00392 svn_error_t *svn_wc_adm_close(svn_wc_adm_access_t *adm_access);
00393 
00394 /** Return the path used to open the access baton @a adm_access */
00395 const char *svn_wc_adm_access_path(svn_wc_adm_access_t *adm_access);
00396 
00397 /** Return the pool used by access baton @a adm_access */
00398 apr_pool_t *svn_wc_adm_access_pool(svn_wc_adm_access_t *adm_access);
00399 
00400 /** Return @c TRUE is the access baton @a adm_access has a write lock,
00401  * @c FALSE otherwise. Compared to svn_wc_locked() this is a cheap, fast
00402  * function that doesn't access the filesystem.
00403  */
00404 svn_boolean_t svn_wc_adm_locked(svn_wc_adm_access_t *adm_access);
00405 
00406 /** Set @a *locked to non-zero if @a path is locked, else set it to zero. */
00407 svn_error_t *
00408 svn_wc_locked(svn_boolean_t *locked,
00409               const char *path,
00410               apr_pool_t *pool);
00411 
00412 
00413 /**
00414  * Return @c TRUE if @a name is the name of the WC administrative
00415  * directory.  Use @a pool for any temporary allocations.  Only works
00416  * with base directory names, not paths or URIs.
00417  *
00418  * For compatibility, the default name (.svn) will always be treated
00419  * as an admin dir name, even if the working copy is actually using an
00420  * alternative name.
00421  *
00422  * @since New in 1.3.
00423  */
00424 svn_boolean_t svn_wc_is_adm_dir(const char *name, apr_pool_t *pool);
00425 
00426 
00427 /**
00428  * Return the name of the administrative directory.
00429  * Use @a pool for any temporary allocations.
00430  *
00431  * The returned pointer will refer to either a statically allocated
00432  * string, or to a string allocated in @a pool.
00433  *
00434  * @since New in 1.3.
00435  */
00436 const char *svn_wc_get_adm_dir(apr_pool_t *pool);
00437 
00438 
00439 /**
00440  * Use @a name for the administrative directory in the working copy.
00441  * Use @a pool for any temporary allocations.
00442  *
00443  * The list of valid names is limited.  Currently only ".svn" (the
00444  * default) and "_svn" are allowed.
00445  *
00446  * @note This function changes global (per-process) state and must be
00447  * called in a single-threaded context during the initialization of a
00448  * Subversion client.
00449  *
00450  * @since New in 1.3.
00451  */
00452 svn_error_t *svn_wc_set_adm_dir(const char *name, apr_pool_t *pool);
00453 
00454 
00455 
00456 /** Traversal information is information gathered by a working copy
00457  * crawl or update.  For example, the before and after values of the
00458  * svn:externals property are important after an update, and since
00459  * we're traversing the working tree anyway (a complete traversal
00460  * during the initial crawl, and a traversal of changed paths during
00461  * the checkout/update/switch), it makes sense to gather the
00462  * property's values then instead of making a second pass.
00463  */
00464 typedef struct svn_wc_traversal_info_t svn_wc_traversal_info_t;
00465 
00466 
00467 /** Return a new, empty traversal info object, allocated in @a pool. */
00468 svn_wc_traversal_info_t *svn_wc_init_traversal_info(apr_pool_t *pool);
00469 
00470 
00471 /** Set @a *externals_old and @a *externals_new to hash tables representing
00472  * changes to values of the svn:externals property on directories
00473  * traversed by @a traversal_info.
00474  *
00475  * @a traversal_info is obtained from svn_wc_init_traversal_info(), but is
00476  * only useful after it has been passed through another function, such
00477  * as svn_wc_crawl_revisions(), svn_wc_get_update_editor(),
00478  * svn_wc_get_switch_editor(), etc.
00479  *
00480  * Each hash maps <tt>const char *</tt> directory names onto
00481  * <tt>const char *</tt> values of the externals property for that directory.
00482  * The dir names are full paths -- that is, anchor plus target, not target
00483  * alone. The values are not parsed, they are simply copied raw, and are
00484  * never NULL: directories that acquired or lost the property are
00485  * simply omitted from the appropriate table.  Directories whose value
00486  * of the property did not change show the same value in each hash.
00487  *
00488  * The hashes, keys, and values have the same lifetime as @a traversal_info.
00489  */
00490 void
00491 svn_wc_edited_externals(apr_hash_t **externals_old,
00492                         apr_hash_t **externals_new,
00493                         svn_wc_traversal_info_t *traversal_info);
00494 
00495 
00496 /** Set @a *depths to a hash table mapping <tt>const char *</tt>
00497  * directory names (directories traversed by @a traversal_info) to
00498  * <tt>const char *</tt> values (the depths of those directories, as
00499  * converted by svn_depth_to_word()).
00500  *
00501  * @a traversal_info is obtained from svn_wc_init_traversal_info(), but is
00502  * only useful after it has been passed through another function, such
00503  * as svn_wc_crawl_revisions(), svn_wc_get_update_editor(),
00504  * svn_wc_get_switch_editor(), etc.
00505  *
00506  * The dir names are full paths -- that is, anchor plus target, not target
00507  * alone.  The values are not allocated, they are static constant strings.
00508  * Although the values are never NULL, not all directories traversed
00509  * are necessarily listed.  For example, directories which did not
00510  * have an svn:externals property set or modified are not included.
00511  *
00512  * The hashes and keys have the same lifetime as @a traversal_info.
00513  *
00514  * @since New in 1.5.
00515  */
00516 void
00517 svn_wc_traversed_depths(apr_hash_t **depths,
00518                         svn_wc_traversal_info_t *traversal_info);
00519 
00520 
00521 /** One external item.  This usually represents one line from an
00522  * svn:externals description but with the path and URL
00523  * canonicalized.
00524  *
00525  * In order to avoid backwards compatibility problems clients should use
00526  * svn_wc_external_item_create() to allocate and intialize this structure
00527  * instead of doing so themselves.
00528  *
00529  * @since New in 1.5.
00530  */
00531 typedef struct svn_wc_external_item2_t
00532 {
00533   /** The name of the subdirectory into which this external should be
00534       checked out.  This is relative to the parent directory that
00535       holds this external item.  (Note that these structs are often
00536       stored in hash tables with the target dirs as keys, so this
00537       field will often be redundant.) */
00538   const char *target_dir;
00539 
00540   /** Where to check out from. */
00541   const char *url;
00542 
00543   /** What revision to check out.  The only valid kinds for this are
00544       svn_opt_revision_number, svn_opt_revision_date, and
00545       svn_opt_revision_head. */
00546   svn_opt_revision_t revision;
00547 
00548   /** The peg revision to use when checking out.  The only valid kinds are
00549       svn_opt_revision_number, svn_opt_revision_date, and
00550       svn_opt_revision_head. */
00551   svn_opt_revision_t peg_revision;
00552 
00553 } svn_wc_external_item2_t;
00554 
00555 /**
00556  * Initialize an external item.
00557  * Set @a *item to an external item object, allocated in @a pool.
00558  *
00559  * In order to avoid backwards compatibility problems, this function
00560  * is used to intialize and allocate the @c svn_wc_external_item2_t
00561  * structure rather than doing so explicitly, as the size of this
00562  * structure may change in the future.
00563  *
00564  * The current implementation never returns error, but callers should
00565  * still check for error, for compatibility with future versions.
00566  *
00567  * @since New in 1.5.
00568  */
00569 svn_error_t *
00570 svn_wc_external_item_create(const svn_wc_external_item2_t **item,
00571                             apr_pool_t *pool);
00572 
00573 /**
00574  * Return a duplicate of @a item, allocated in @a pool.  No part of the new
00575  * item will be shared with @a item.
00576  *
00577  * @since New in 1.5.
00578  */
00579 svn_wc_external_item2_t *
00580 svn_wc_external_item2_dup(const svn_wc_external_item2_t *item,
00581                           apr_pool_t *pool);
00582 
00583 /**
00584  * One external item.  Similar to svn_wc_external_item2_t, except
00585  * @a revision is interpreted as both the operational revision and the
00586  * peg revision.
00587  *
00588  * @deprecated Provided for backward compatibility with the 1.4 API.
00589  */
00590 typedef struct svn_wc_external_item_t
00591 {
00592   /** Same as @c svn_wc_external_item2_t.target_dir */
00593   const char *target_dir;
00594 
00595   /** Same as @c svn_wc_external_item2_t.url */
00596   const char *url;
00597 
00598   /** Same as @c svn_wc_external_item2_t.revision */
00599   svn_opt_revision_t revision;
00600 
00601 } svn_wc_external_item_t;
00602 
00603 /**
00604  * Return a duplicate of @a item, allocated in @a pool.  No part of the new
00605  * item will be shared with @a item.
00606  *
00607  * @since New in 1.3.
00608  *
00609  * @deprecated Provided for backward compatibility with the 1.4 API.
00610  */
00611 svn_wc_external_item_t *
00612 svn_wc_external_item_dup(const svn_wc_external_item_t *item,
00613                          apr_pool_t *pool);
00614 
00615 /**
00616  * If @a externals_p is non-NULL, set @a *externals_p to an array of
00617  * @c svn_wc_external_item2_t * objects based on @a desc.  The @a url
00618  * member of the objects will be canonicalized if @a canonicalize_url
00619  * is @c TRUE.
00620  *
00621  * If the format of @a desc is invalid, don't touch @a *externals_p and
00622  * return @c SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION.  Thus, if
00623  * you just want to check the validity of an externals description,
00624  * and don't care about the parsed result, pass NULL for @a externals_p.
00625  *
00626  * The format of @a desc is the same as for values of the directory
00627  * property @c SVN_PROP_EXTERNALS, which see.
00628  *
00629  * Allocate the table, keys, and values in @a pool.
00630  *
00631  * Use @a parent_directory only in constructing error strings.
00632  *
00633  * @since New in 1.5.
00634  */
00635 svn_error_t *
00636 svn_wc_parse_externals_description3(apr_array_header_t **externals_p,
00637                                     const char *parent_directory,
00638                                     const char *desc,
00639                                     svn_boolean_t canonicalize_url,
00640                                     apr_pool_t *pool);
00641 
00642 /**
00643  * Similar to svn_wc_parse_externals_description3() with @a
00644  * canonicalize_url set to @c TRUE, but returns an array of @c
00645  * svn_wc_external_item_t * objects instead of @c
00646  * svn_wc_external_item2_t * objects
00647  *
00648  * @since New in 1.1.
00649  *
00650  * @deprecated Provided for backward compatibility with the 1.4 API.
00651  */
00652 svn_error_t *
00653 svn_wc_parse_externals_description2(apr_array_header_t **externals_p,
00654                                     const char *parent_directory,
00655                                     const char *desc,
00656                                     apr_pool_t *pool);
00657 
00658 /**
00659  * Similar to svn_wc_parse_externals_description2(), but returns the
00660  * parsed externals in a hash instead of an array.  This function
00661  * should not be used, as storing the externals in a hash causes their
00662  * order of evaluation to be not easily identifiable.
00663  *
00664  * @deprecated Provided for backward compatibility with the 1.0 API.
00665  */
00666 svn_error_t *
00667 svn_wc_parse_externals_description(apr_hash_t **externals_p,
00668                                    const char *parent_directory,
00669                                    const char *desc,
00670                                    apr_pool_t *pool);
00671 
00672 
00673 
00674 /* Notification/callback handling. */
00675 
00676 /**
00677  * @defgroup svn_wc_notifications Notification callback handling
00678  * @{
00679  *
00680  * In many cases, the WC library will scan a working copy and make
00681  * changes. The caller usually wants to know when each of these changes
00682  * has been made, so that it can display some kind of notification to
00683  * the user.
00684  *
00685  * These notifications have a standard callback function type, which
00686  * takes the path of the file that was affected, and a caller-
00687  * supplied baton.
00688  *
00689  * Note that the callback is a 'void' return -- this is a simple
00690  * reporting mechanism, rather than an opportunity for the caller to
00691  * alter the operation of the WC library.
00692  *
00693  * Note also that some of the actions are used across several
00694  * different Subversion commands.  For example, the update actions are
00695  * also used for checkouts, switches, and merges.
00696  */
00697 
00698 /** The type of action occurring. */
00699 typedef enum svn_wc_notify_action_t
00700 {
00701   /** Adding a path to revision control. */
00702   svn_wc_notify_add = 0,
00703 
00704   /** Copying a versioned path. */
00705   svn_wc_notify_copy,
00706 
00707   /** Deleting a versioned path. */
00708   svn_wc_notify_delete,
00709 
00710   /** Restoring a missing path from the pristine text-base. */
00711   svn_wc_notify_restore,
00712 
00713   /** Reverting a modified path. */
00714   svn_wc_notify_revert,
00715 
00716   /** A revert operation has failed. */
00717   svn_wc_notify_failed_revert,
00718 
00719   /** Resolving a conflict. */
00720   svn_wc_notify_resolved,
00721 
00722   /** Skipping a path. */
00723   svn_wc_notify_skip,
00724 
00725   /** Got a delete in an update. */
00726   svn_wc_notify_update_delete,
00727 
00728   /** Got an add in an update. */
00729   svn_wc_notify_update_add,
00730 
00731   /** Got any other action in an update. */
00732   svn_wc_notify_update_update,
00733 
00734   /** The last notification in an update (including updates of externals). */
00735   svn_wc_notify_update_completed,
00736 
00737   /** Updating an external module. */
00738   svn_wc_notify_update_external,
00739 
00740   /** The last notification in a status (including status on externals). */
00741   svn_wc_notify_status_completed,
00742 
00743   /** Running status on an external module. */
00744   svn_wc_notify_status_external,
00745 
00746   /** Committing a modification. */
00747   svn_wc_notify_commit_modified,
00748 
00749   /** Committing an addition. */
00750   svn_wc_notify_commit_added,
00751 
00752   /** Committing a deletion. */
00753   svn_wc_notify_commit_deleted,
00754 
00755   /** Committing a replacement. */
00756   svn_wc_notify_commit_replaced,
00757 
00758   /** Transmitting post-fix text-delta data for a file. */
00759   svn_wc_notify_commit_postfix_txdelta,
00760 
00761   /** Processed a single revision's blame. */
00762   svn_wc_notify_blame_revision,
00763 
00764   /** Locking a path. @since New in 1.2. */
00765   svn_wc_notify_locked,
00766 
00767   /** Unlocking a path. @since New in 1.2. */
00768   svn_wc_notify_unlocked,
00769 
00770   /** Failed to lock a path. @since New in 1.2. */
00771   svn_wc_notify_failed_lock,
00772 
00773   /** Failed to unlock a path. @since New in 1.2. */
00774   svn_wc_notify_failed_unlock,
00775 
00776   /** Tried adding a path that already exists. @since New in 1.5. */
00777   svn_wc_notify_exists,
00778 
00779   /** Changelist name set. @since New in 1.5. */
00780   svn_wc_notify_changelist_set,
00781 
00782   /** Changelist name cleared. @since New in 1.5. */
00783   svn_wc_notify_changelist_clear,
00784 
00785   /** Warn user that a path has moved from one changelist to another.
00786       @since New in 1.5. */
00787   svn_wc_notify_changelist_moved,
00788 
00789   /** A merge operation (to path) has begun.  See @c merge_range in
00790       @c svn_wc_notify_t.  @since New in 1.5   */
00791   svn_wc_notify_merge_begin,
00792 
00793   /** A merge operation (to path) from a foreign repository has begun.
00794       See @c merge_range in @c svn_wc_notify_t. @since New in 1.5. */
00795   svn_wc_notify_foreign_merge_begin,
00796 
00797   /** Replace notification. @since New in 1.5. */
00798   svn_wc_notify_update_replace
00799 
00800 } svn_wc_notify_action_t;
00801 
00802 
00803 /** The type of notification that is occurring. */
00804 typedef enum svn_wc_notify_state_t
00805 {
00806   svn_wc_notify_state_inapplicable = 0,
00807 
00808   /** Notifier doesn't know or isn't saying. */
00809   svn_wc_notify_state_unknown,
00810 
00811   /** The state did not change. */
00812   svn_wc_notify_state_unchanged,
00813 
00814   /** The item wasn't present. */
00815   svn_wc_notify_state_missing,
00816 
00817   /** An unversioned item obstructed work. */
00818   svn_wc_notify_state_obstructed,
00819 
00820   /** Pristine state was modified. */
00821   svn_wc_notify_state_changed,
00822 
00823   /** Modified state had mods merged in. */
00824   svn_wc_notify_state_merged,
00825 
00826   /** Modified state got conflicting mods. */
00827   svn_wc_notify_state_conflicted
00828 
00829 } svn_wc_notify_state_t;
00830 
00831 /**
00832  * What happened to a lock during an operation.
00833  *
00834  * @since New in 1.2.
00835  */
00836 typedef enum svn_wc_notify_lock_state_t {
00837   svn_wc_notify_lock_state_inapplicable = 0,
00838   svn_wc_notify_lock_state_unknown,
00839   /** The lock wasn't changed. */
00840   svn_wc_notify_lock_state_unchanged,
00841   /** The item was locked. */
00842   svn_wc_notify_lock_state_locked,
00843   /** The item was unlocked. */
00844   svn_wc_notify_lock_state_unlocked
00845 } svn_wc_notify_lock_state_t;
00846 
00847 /**
00848  * Structure used in the @c svn_wc_notify_func2_t function.
00849  *
00850  * @c kind, @c content_state, @c prop_state and @c lock_state are from
00851  * after @c action, not before.
00852  *
00853  * @note If @c action is @c svn_wc_notify_update, then @c path has
00854  * already been installed, so it is legitimate for an implementation of
00855  * @c svn_wc_notify_func2_t to examine @c path in the working copy.
00856  *
00857  * @note The purpose of the @c kind, @c mime_type, @c content_state, and
00858  * @c prop_state fields is to provide "for free" information that an
00859  * implementation is likely to want, and which it would otherwise be
00860  * forced to deduce via expensive operations such as reading entries
00861  * and properties.  However, if the caller does not have this
00862  * information, it will simply pass the corresponding `*_unknown'
00863  * values, and it is up to the implementation how to handle that
00864  * (i.e., whether to attempt deduction, or just to punt and
00865  * give a less informative notification).
00866  *
00867  * @note Callers of notification functions should use svn_wc_create_notify()
00868  * to create structures of this type to allow for extensibility.
00869  *
00870  * @since New in 1.2.
00871  */
00872 typedef struct svn_wc_notify_t {
00873   /** Path, either absolute or relative to the current working directory
00874    * (i.e., not relative to an anchor). */
00875   const char *path;
00876   /** Action that describes what happened to @c path. */
00877   svn_wc_notify_action_t action;
00878   /** Node kind of @c path. */
00879   svn_node_kind_t kind;
00880   /** If non-NULL, indicates the mime-type of @c path.
00881    * It is always @c NULL for directories. */
00882   const char *mime_type;
00883   /** Points to the lock structure received from the repository when
00884    * @c action is @c svn_wc_notify_locked.  For other actions, it is
00885    * @c NULL. */
00886   const svn_lock_t *lock;
00887   /** Points to an error describing the reason for the failure when @c
00888    * action is @c svn_wc_notify_failed_lock or @c svn_wc_notify_failed_unlock.
00889    * Is @c NULL otherwise. */
00890   svn_error_t *err;
00891   /** The type of notification that is occurring about node content. */
00892   svn_wc_notify_state_t content_state;
00893   /** The type of notification that is occurring about node properties. */
00894   svn_wc_notify_state_t prop_state;
00895   /** Reflects the addition or removal of a lock token in the working copy. */
00896   svn_wc_notify_lock_state_t lock_state;
00897   /** When @c action is @c svn_wc_notify_update_completed, target revision
00898    * of the update, or @c SVN_INVALID_REVNUM if not available; when @c
00899    * action is @c svn_wc_notify_blame_revision, processed revision.
00900    * In all other cases, it is @c SVN_INVALID_REVNUM. */
00901   svn_revnum_t revision;
00902   /** When @c action is @c svn_wc_notify_changelist_add or name.  In all other
00903    * cases, it is @c NULL. */
00904   const char *changelist_name;
00905   /** When @c action is @c svn_wc_notify_merge_begin, and both the
00906       left and right sides of the merge are from the same URL.  In all
00907       other cases, it is @c NULL.  */
00908   svn_merge_range_t *merge_range;
00909   /* NOTE: Add new fields at the end to preserve binary compatibility.
00910      Also, if you add fields here, you have to update svn_wc_create_notify
00911      and svn_wc_dup_notify. */
00912 } svn_wc_notify_t;
00913 
00914 /**
00915  * Allocate an @c svn_wc_notify_t structure in @a pool, initialize and return
00916  * it.
00917  *
00918  * Set the @c path field of the created struct to @a path, and @c action to
00919  * @a action.  Set all other fields to their @c _unknown, @c NULL or
00920  * invalid value, respectively.
00921  *
00922  * @since New in 1.2.
00923  */
00924 svn_wc_notify_t *
00925 svn_wc_create_notify(const char *path,
00926                      svn_wc_notify_action_t action,
00927                      apr_pool_t *pool);
00928 
00929 /**
00930  * Return a deep copy of @a notify, allocated in @a pool.
00931  *
00932  * @since New in 1.2.
00933  */
00934 svn_wc_notify_t *
00935 svn_wc_dup_notify(const svn_wc_notify_t *notify,
00936                   apr_pool_t *pool);
00937 
00938 /**
00939  * Notify the world that @a notify->action has happened to @a notify->path.
00940  *
00941  * Recommendation: callers of @c svn_wc_notify_func2_t should avoid
00942  * invoking it multiple times on the same path within a given
00943  * operation, and implementations should not bother checking for such
00944  * duplicate calls.  For example, in an update, the caller should not
00945  * invoke the notify func on receiving a prop change and then again
00946  * on receiving a text change.  Instead, wait until all changes have
00947  * been received, and then invoke the notify func once (from within
00948  * an @c svn_delta_editor_t's close_file(), for example), passing
00949  * the appropriate @a notify->content_state and @a notify->prop_state flags.
00950  *
00951  * @since New in 1.2.
00952  */
00953 typedef void (*svn_wc_notify_func2_t)(void *baton,
00954                                       const svn_wc_notify_t *notify,
00955                                       apr_pool_t *pool);
00956 
00957 /**
00958  * Similar to @c svn_wc_notify_func2_t, but takes the information as arguments
00959  * instead of struct fields.
00960  *
00961  * @deprecated Provided for backward compatibility with the 1.1 API.
00962  */
00963 typedef void (*svn_wc_notify_func_t)(void *baton,
00964                                      const char *path,
00965                                      svn_wc_notify_action_t action,
00966                                      svn_node_kind_t kind,
00967                                      const char *mime_type,
00968                                      svn_wc_notify_state_t content_state,
00969                                      svn_wc_notify_state_t prop_state,
00970                                      svn_revnum_t revision);
00971 
00972 /** @} */
00973 
00974 
00975 /**
00976  * A simple callback type to wrap svn_ra_get_file();  see that
00977  * docstring for more information.
00978  *
00979  * This technique allows libsvn_client to 'wrap' svn_ra_get_file() and
00980  * pass it down into libsvn_wc functions, thus allowing the WC layer
00981  * to legally call the RA function via (blind) callback.
00982  *
00983  * @since New in 1.5
00984  */
00985 typedef svn_error_t *(*svn_wc_get_file_t)(void *baton,
00986                                           const char *path,
00987                                           svn_revnum_t revision,
00988                                           svn_stream_t *stream,
00989                                           svn_revnum_t *fetched_rev,
00990                                           apr_hash_t **props,
00991                                           apr_pool_t *pool);
00992 
00993 
00994 /**
00995  * Interactive conflict handling
00996  *
00997  * @defgroup svn_wc_conflict Conflict callback functionality
00998  *
00999  * @{
01000  *
01001  * This API gives a Subversion client application the opportunity to
01002  * define a callback that allows the user to resolve conflicts
01003  * interactively during updates and merges.
01004  *
01005  * If a conflict is discovered, libsvn_wc invokes the callback with an
01006  * @c svn_wc_conflict_description_t.  This structure describes the
01007  * path in conflict, whether it's a text or property conflict, and may
01008  * also present up to three files that can be used to resolve the
01009  * conflict (perhaps by launching an editor or 3rd-party merging
01010  * tool).  The structure also provides a possible fourth file (@c
01011  * merged_file) which, if not NULL, represents libsvn_wc's attempt to
01012  * contextually merge the first three files.  (Note that libsvn_wc
01013  * will not attempt to merge a file that it believes is binary, and it
01014  * will only attempt to merge property values it believes to be a
01015  * series of multi-line text.)
01016  *
01017  * When the callback is finished interacting with the user, it
01018  * responds by returning a @c svn_wc_conflict_result_t.  This
01019  * structure indicates whether the user wants to postpone the conflict
01020  * for later (allowing libsvn_wc to mark the path "conflicted" as
01021  * usual), or whether the user wants libsvn_wc to use one of the four
01022  * files as the "final" state for resolving the conflict immediately.
01023  *
01024  * Note that the callback is at liberty (and encouraged) to merge the
01025  * three files itself.  If it does so, it signals this to libsvn_wc by
01026  * returning a choice of @c svn_wc_conflict_choose_merged.  To return
01027  * the 'final' merged file to libsvn_wc, the callback has the option of
01028  * either:
01029  *
01030  *    - editing the original @c merged_file in-place
01031  *
01032  *        or, if libsvn_wc never supplied a merged_file in the
01033  *        description structure (i.e. passed NULL for that field),
01034  *
01035  *    - return the merged file in the @c svn_wc_conflict_result_t.
01036  *
01037  */
01038 
01039 /** The type of action being attempted on an object.
01040  *
01041  * @since New in 1.5.
01042  */
01043 typedef enum svn_wc_conflict_action_t
01044 {
01045   svn_wc_conflict_action_edit,    /* attempting to change text or props */
01046   svn_wc_conflict_action_add,     /* attempting to add object */
01047   svn_wc_conflict_action_delete   /* attempting to delete object */
01048 
01049 } svn_wc_conflict_action_t;
01050 
01051 
01052 /** The pre-existing condition which is causing a state of conflict.
01053  *
01054  * @since New in 1.5.
01055  */
01056 typedef enum svn_wc_conflict_reason_t
01057 {
01058   svn_wc_conflict_reason_edited,     /* local edits are already present */
01059   svn_wc_conflict_reason_obstructed, /* another object is in the way */
01060   svn_wc_conflict_reason_deleted,    /* object is already schedule-delete */
01061   svn_wc_conflict_reason_missing,    /* object is unknown or missing */
01062   svn_wc_conflict_reason_unversioned /* object is unversioned */
01063 
01064 } svn_wc_conflict_reason_t;
01065 
01066 
01067 /** The type of conflict being described by an @c
01068  * svn_wc_conflict_description_t (see below).
01069  *
01070  * @since New in 1.5.
01071  */
01072 typedef enum svn_wc_conflict_kind_t
01073 {
01074   svn_wc_conflict_kind_text,         /* textual conflict (on a file) */
01075   svn_wc_conflict_kind_property      /* property conflict (on a file or dir) */
01076 
01077   /* ### Add future kinds here that represent "tree" conflicts. */
01078 
01079 } svn_wc_conflict_kind_t;
01080 
01081 
01082 /** A struct that describes a conflict that has occurred in the
01083  * working copy.  Passed to @c svn_wc_conflict_resolver_func_t.
01084  *
01085  * @note Fields may be added to the end of this structure in future
01086  * versions.  Therefore, to preserve binary compatibility, users
01087  * should not directly allocate structures of this type.
01088  *
01089  * @since New in 1.5.
01090  */
01091 typedef struct svn_wc_conflict_description_t
01092 {
01093   /** The path that is being operated on */
01094   const char *path;
01095 
01096   /** The node type of the path being operated on */
01097   svn_node_kind_t node_kind;
01098 
01099   /** What sort of conflict are we describing? */
01100   svn_wc_conflict_kind_t kind;
01101 
01102   /** Only set if this is a property conflict. */
01103   const char *property_name;
01104 
01105   /** The following only apply to file objects:
01106    *   - Whether svn thinks the object is a binary file.
01107    *   - If available (non-NULL), the svn:mime-type property of the path */
01108   svn_boolean_t is_binary;
01109 
01110   /** mime-type of the object */
01111   const char *mime_type;
01112 
01113   /** If not NULL, an open working copy access baton to either the
01114    *  path itself (if @c path is a directory), or to the parent
01115    *  directory (if @c path is a file.) */
01116   svn_wc_adm_access_t *access;
01117 
01118   /** The action being attempted on @c path. */
01119   svn_wc_conflict_action_t action;
01120 
01121   /** The reason for the conflict. */
01122   svn_wc_conflict_reason_t reason;
01123 
01124   /** If this is text-conflict and involves the merging of two files
01125    * descended from a common ancestor, here are the paths of up to
01126    * four fulltext files that can be used to interactively resolve the
01127    * conflict.  All four files will be in repository-normal form -- LF
01128    * line endings and contracted keywords.  (If any of these files are
01129    * not available, they default to NULL.)
01130    *
01131    * On the other hand, if this is a property-conflict, then these
01132    * paths represent temporary files that contain the three different
01133    * property-values in conflict.  The fourth path (@c merged_file)
01134    * may or may not be NULL;  if set, it represents libsvn_wc's
01135    * attempt to merge the property values together.  (Remember that
01136    * property values are technically binary values, and thus can't
01137    * always be merged.)
01138    */
01139   const char *base_file;     /* common ancestor of the two files being merged */
01140 
01141   /** their version of the file */
01142   const char *their_file;
01143 
01144   /** my locally-edited version of the file */
01145   const char *my_file;
01146 
01147   /** merged version; may contain conflict markers */
01148   const char *merged_file;
01149 
01150 } svn_wc_conflict_description_t;
01151 
01152 
01153 /** The way in which the conflict callback chooses a course of action.
01154  *
01155  * @since New in 1.5.
01156  */
01157 typedef enum svn_wc_conflict_choice_t
01158 {
01159   /* Don't resolve the conflict now.  Let libsvn_wc mark the path
01160      'conflicted', so user can run 'svn resolved' later. */
01161   svn_wc_conflict_choose_postpone,
01162 
01163   /* If their were files to choose from, select one as a way of
01164      resolving the conflict here and now.  libsvn_wc will then do the
01165      work of "installing" the chosen file.
01166   */
01167   svn_wc_conflict_choose_base,            /* original version */
01168   svn_wc_conflict_choose_theirs_full,     /* incoming version */
01169   svn_wc_conflict_choose_mine_full,       /* own version */
01170   svn_wc_conflict_choose_theirs_conflict, /* incoming (for conflicted hunks) */
01171   svn_wc_conflict_choose_mine_conflict,   /* own (for conflicted hunks) */
01172   svn_wc_conflict_choose_merged           /* merged version */
01173 
01174 } svn_wc_conflict_choice_t;
01175 
01176 
01177 /** The final result returned by @a svn_wc_conflict_resolver_func_t.
01178  *
01179  * @note Fields may be added to the end of this structure in future
01180  * versions.  Therefore, to preserve binary compatibility, users
01181  * should not directly allocate structures of this type.  Instead,
01182  * construct this structure using @c svn_wc_create_conflict_result()
01183  * below.
01184  *
01185  * @since New in 1.5.
01186  */
01187 typedef struct svn_wc_conflict_result_t
01188 {
01189   /** A choice to either delay the conflict resolution or select a
01190       particular file to resolve the conflict. */
01191   svn_wc_conflict_choice_t choice;
01192 
01193   /** If not NULL, this is a path to a file which contains the client's
01194       (or more likely, the user's) merging of the three values in
01195       conflict.  libsvn_wc accepts this file if (and only if) @c choice
01196       is set to @c svn_wc_conflict_choose_merged.*/
01197   const char *merged_file;
01198 
01199 } svn_wc_conflict_result_t;
01200 
01201 
01202 /**
01203  * Allocate an @c svn_wc_conflict_result_t structure in @a pool,
01204  * initialize and return it.
01205  *
01206  * Set the @c choice field of the structure to @a choice, and @c
01207  * merged_file to @a merged_file.  Set all other fields to their @c
01208  * _unknown, @c NULL or invalid value, respectively.
01209  *
01210  * @since New in 1.5.
01211  */
01212 svn_wc_conflict_result_t *
01213 svn_wc_create_conflict_result(svn_wc_conflict_choice_t choice,
01214                               const char *merged_file,
01215                               apr_pool_t *pool);
01216 
01217 
01218 /** A callback used in svn_client_merge3(), svn_client_update3(), and
01219  * svn_client_switch2() for resolving conflicts during the application
01220  * of a tree delta to a working copy.
01221  *
01222  * @a description describes the exact nature of the conflict, and
01223  * provides information to help resolve it.  @a baton is a closure
01224  * object; it should be provided by the implementation, and passed by
01225  * the caller.  All allocations should be performed in @a pool.  When
01226  * finished, the callback signals its resolution by returning a
01227  * structure in @a *result.  (See @c svn_wc_conflict_result_t.)
01228  *
01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are automatically resolvable and which require user
01236  * interaction.
01237  *
01238  * @since New in 1.5.
01239  */
01240 typedef svn_error_t *(*svn_wc_conflict_resolver_func_t)
01241     (svn_wc_conflict_result_t **result,
01242      const svn_wc_conflict_description_t *description,
01243      void *baton,
01244      apr_pool_t *pool);
01245 
01246 /** @} */
01247 
01248 
01249 
01250 /**
01251  * A callback vtable invoked by our diff-editors, as they receive
01252  * diffs from the server.  'svn diff' and 'svn merge' both implement
01253  * their own versions of this table.
01254  *
01255  * @since New in 1.2.
01256  */
01257 typedef struct svn_wc_diff_callbacks2_t
01258 {
01259   /** A file @a path has changed.  If @a tmpfile2 is non-NULL, the
01260    * contents have changed and those changes can be seen by comparing
01261    * @a tmpfile1 and @a tmpfile2, which represent @a rev1 and @a rev2 of
01262    * the file, respectively.
01263    *
01264    * If known, the @c svn:mime-type value of each file is passed into
01265    * @a mimetype1 and @a mimetype2;  either or both of the values can
01266    * be NULL.  The implementor can use this information to decide if
01267    * (or how) to generate differences.
01268    *
01269    * @a propchanges is an array of (@c svn_prop_t) structures. If it has
01270    * any elements, the original list of properties is provided in
01271    * @a originalprops, which is a hash of @c svn_string_t values, keyed on the
01272    * property name.
01273    *
01274    * @a adm_access will be an access baton for the directory containing
01275    * @a path, or @c NULL if the diff editor is not using access batons.
01276    *
01277    * If @a contentstate is non-NULL, set @a *contentstate to the state of
01278    * the file contents after the operation has been performed.  The same
01279    * applies for @a propstate regarding the property changes.  (In
01280    * practice, this is only useful with merge, not diff; diff callbacks
01281    * will probably set @a *contentstate and @a *propstate to
01282    * @c svn_wc_notify_state_unknown, since they do not change the state and
01283    * therefore do not bother to know the state after the operation.)
01284    */
01285   svn_error_t *(*file_changed)(svn_wc_adm_access_t *adm_access,
01286                                svn_wc_notify_state_t *contentstate,
01287                                svn_wc_notify_state_t *propstate,
01288                                const char *path,
01289                                const char *tmpfile1,
01290                                const char *tmpfile2,
01291                                svn_revnum_t rev1,
01292                                svn_revnum_t rev2,
01293                                const char *mimetype1,
01294                                const char *mimetype2,
01295                                const apr_array_header_t *propchanges,
01296                                apr_name">01229  * Implementations of this callback are free to present the conflict
01230  * using any user interface.  This may include simple contextual
01231  * conflicts in a file's text or properties, or more complex
01232  * 'tree'-based conflcts related to obstructed additions, deletions,
01233  * and edits.  The callback implementation is free to decide which
01234  * sorts of conflicts to handle; it's also free to decide which types
01235  * of conflicts are aut