23 #ifndef SVN_MERGEINFO_H
24 #define SVN_MERGEINFO_H
26 #include <apr_pools.h>
27 #include <apr_tables.h>
102 #define SVN_MERGEINFO_NONINHERITABLE_STR "*"
139 typedef apr_hash_t *svn_mergeinfo_catalog_t;
187 svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto,
215 svn_mergeinfo_t whiteboard, apr_pool_t *pool);
230 apr_array_header_t *from, apr_array_header_t *to,
251 apr_array_header_t *changes,
269 apr_array_header_t *whiteboard,
281 svn_mergeinfo_t mergeinfo1,
282 svn_mergeinfo_t mergeinfo2,
305 apr_array_header_t *rangelist1,
306 apr_array_header_t *rangelist2,
331 const apr_array_header_t *rangelist,
345 apr_array_header_t *rangelist,
364 svn_mergeinfo_t mergeinfo,
381 svn_mergeinfo_t mergeinput,
399 svn_mergeinfo_catalog_t
Counted-length strings for Subversion, plus some C string goodies.
svn_error_t * svn_rangelist_to_string(svn_string_t **output, const apr_array_header_t *rangelist, apr_pool_t *pool)
Take an array of svn_merge_range_t *'s in rangelist, and convert it back to a text format rangelist i...
apr_hash_t * svn_mergeinfo_t
Terminology for data structures that contain mergeinfo.
svn_error_t * svn_rangelist_diff(apr_array_header_t **deleted, apr_array_header_t **added, apr_array_header_t *from, apr_array_header_t *to, svn_boolean_t consider_inheritance, apr_pool_t *pool)
Calculate the delta between two rangelists consisting of svn_merge_range_t * elements (sorted in asce...
svn_error_t * svn_rangelist_inheritable(apr_array_header_t **inheritable_rangelist, apr_array_header_t *rangelist, svn_revnum_t start, svn_revnum_t end, apr_pool_t *pool)
Return a deep copy of svn_merge_range_t *'s in rangelist excluding all non-inheritable svn_merge_rang...
svn_mergeinfo_inheritance_t
The three ways to request mergeinfo affecting a given path.
Mergeinfo on target's nearest (path-wise, not history-wise) ancestor, regardless of whether target ha...
svn_error_t * svn_mergeinfo_intersect(svn_mergeinfo_t *mergeinfo, svn_mergeinfo_t mergeinfo1, svn_mergeinfo_t mergeinfo2, apr_pool_t *pool)
Find the intersection of two mergeinfos, mergeinfo1 and mergeinfo2, and place the result in *mergeinf...
svn_error_t * svn_rangelist_remove(apr_array_header_t **output, apr_array_header_t *eraser, apr_array_header_t *whiteboard, svn_boolean_t consider_inheritance, apr_pool_t *pool)
Removes eraser (the subtrahend) from whiteboard (the minuend), and places the resulting difference in...
svn_error_t * svn_mergeinfo_diff(svn_mergeinfo_t *deleted, svn_mergeinfo_t *added, svn_mergeinfo_t mergefrom, svn_mergeinfo_t mergeto, svn_boolean_t consider_inheritance, apr_pool_t *pool)
Calculate the delta between two mergeinfos, mergefrom and mergeto (which may be NULL), and place the result in *deleted and *added (neither output argument may be NULL).
svn_error_t * svn_rangelist_intersect(apr_array_header_t **rangelist, apr_array_header_t *rangelist1, apr_array_header_t *rangelist2, svn_boolean_t consider_inheritance, apr_pool_t *pool)
Find the intersection of two rangelists consisting of svn_merge_range_t * elements, rangelist1 and rangelist2, and place the result in *rangelist (which is never NULL).
const char * svn_inheritance_to_word(svn_mergeinfo_inheritance_t inherit)
Return a constant string expressing inherit as an English word, i.e., "explicit" (default), "inherited", or "nearest_ancestor".
svn_error_t * svn_mergeinfo_parse(svn_mergeinfo_t *mergeinfo, const char *input, apr_pool_t *pool)
Parse the mergeinfo from input into *mergeinfo.
Explicit mergeinfo, or if that doesn't exist, the inherited mergeinfo from a target's nearest (path-w...
svn_error_t * svn_mergeinfo_merge(svn_mergeinfo_t mergeinfo, svn_mergeinfo_t changes, apr_pool_t *pool)
Merge one mergeinfo, changes, into another mergeinfo mergeinfo.
svn_error_t * svn_rangelist_reverse(apr_array_header_t *rangelist, apr_pool_t *pool)
Reverse rangelist, and the start and end fields of each range in rangelist, in place.
svn_error_t * svn_mergeinfo_inheritable(svn_mergeinfo_t *inheritable_mergeinfo, svn_mergeinfo_t mergeinfo, const char *path, svn_revnum_t start, svn_revnum_t end, apr_pool_t *pool)
Return a deep copy of mergeinfo, excluding all non-inheritable svn_merge_range_t. ...
svn_mergeinfo_catalog_t svn_mergeinfo_catalog_dup(svn_mergeinfo_catalog_t mergeinfo_catalog, apr_pool_t *pool)
Return a deep copy of mergeinfo_catalog, allocated in pool.
apr_array_header_t * svn_rangelist_dup(apr_array_header_t *rangelist, apr_pool_t *pool)
Return a deep copy of rangelist, allocated in pool.
svn_error_t * svn_mergeinfo_to_string(svn_string_t **output, svn_mergeinfo_t mergeinput, apr_pool_t *pool)
Take a mergeinfo in MERGEINPUT, and convert it back to unparsed mergeinfo in *OUTPUT.
long int svn_revnum_t
About Special Files in Subversion.
svn_mergeinfo_t svn_mergeinfo_dup(svn_mergeinfo_t mergeinfo, apr_pool_t *pool)
Return a deep copy of mergeinfo, allocated in pool.
svn_mergeinfo_inheritance_t svn_inheritance_from_word(const char *word)
Return the appropriate svn_mergeinfo_inheritance_t for word.
svn_error_t * svn_mergeinfo_sort(svn_mergeinfo_t mergeinfo, apr_pool_t *pool)
Take a hash of mergeinfo in mergeinfo, and sort the rangelists associated with each key (in place)...
int svn_boolean_t
YABT: Yet Another Boolean Type.
svn_error_t * svn_rangelist_merge(apr_array_header_t **rangelist, apr_array_header_t *changes, apr_pool_t *pool)
Merge two rangelists consisting of svn_merge_range_t * elements, *rangelist and changes, placing the results in *rangelist.
svn_error_t * svn_mergeinfo_remove(svn_mergeinfo_t *mergeinfo, svn_mergeinfo_t eraser, svn_mergeinfo_t whiteboard, apr_pool_t *pool)
Removes eraser (the subtrahend) from whiteboard (the minuend), and places the resulting difference in...