Hi,
As per http://svn.haxx.se/dev/archive-2006-09/0975.shtml, please find
below an internal function that makes a mergeinfo hash out of a single
path and a single merge-range list.
I have gone the svn_sort__hash() way of adding a '__' function in a
header file. The other option would have been to create a libsvn_subr
local header file (ala utf_impl.h), but I feel this is an overkill for a
single function.
Comments suggestions welcome.
Thanks to Kamesh for pointing out the two different ways to make
internal APIs.
[[[
Abstract construction of a mergeinfo of a single path with single
merge-range
into a separate function.
On the merge-tracking branch:
Patch By: dlr
madanus
* subversion/include/svn_mergeinfo.h
(svn_mergeinfo__make): New.
* subversion/libsvn_subr/mergeinfo.c
(svn_mergeinfo__make): New function to create a mergeinfo, given a single
path and a single merge-range.
]]]
Regards,
Madan.
Index: subversion/include/svn_mergeinfo.h
===================================================================
--- subversion/include/svn_mergeinfo.h (revision 21841)
+++ subversion/include/svn_mergeinfo.h (working copy)
@@ -47,6 +47,13 @@
svn_mergeinfo_parse(const char *input, apr_hash_t **mergehash,
apr_pool_t *pool);
+/** Make a mergeinfo hash for the given @a path, @a start and @a end
+ * revisions.
+ */
+apr_hash_t *
+svn_mergeinfo__make(const char *path, svn_revnum_t start, svn_revnum_t end,
+ apr_pool_t *pool);
+
/** Calculate the delta between two hashes of merge info, @a mergefrom
* and @a mergeto, and place the result in @a deleted and @a added
* (neither output argument will ever be @c NULL), stored as the usual
Index: subversion/libsvn_subr/mergeinfo.c
===================================================================
--- subversion/libsvn_subr/mergeinfo.c (revision 21841)
+++ subversion/libsvn_subr/mergeinfo.c (working copy)
@@ -224,7 +224,24 @@
return parse_top(&input, input + strlen(input), *hash, pool);
}
+apr_hash_t *
+svn_mergeinfo__make(const char *path, svn_revnum_t start, svn_revnum_t end,
+ apr_pool_t *pool)
+{
+ apr_hash_t *mergeinfo;
+ svn_merge_range_t *range = apr_palloc(pool, sizeof(*range));
+ apr_array_header_t *rangelist = apr_array_make(pool, 1, sizeof(range));
+ range->start = start;
+ range->end = end;
+
+ APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = range;
+ mergeinfo = apr_hash_make(pool);
+ apr_hash_set(mergeinfo, path, sizeof(rangelist), rangelist);
+
+ return mergeinfo;
+}
+
/* Merge two revision lists IN1 and IN2 and place the result in
OUTPUT. We do some trivial attempts to combine ranges as we go. */
svn_error_t *
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Oct 9 12:02:12 2006