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