Author: hwright
Date: Fri Sep 30 15:08:09 2011
New Revision: 1177694
URL: http://svn.apache.org/viewvc?rev=1177694&view=rev
Log:
On the fs-py branch:
Bring libsvn_fs_py up-to-date with libsvn_fs_fs.
Modified:
subversion/branches/fs-py/subversion/libsvn_fs_py/ (props changed)
subversion/branches/fs-py/subversion/libsvn_fs_py/fs.c
subversion/branches/fs-py/subversion/libsvn_fs_py/key-gen.c
subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c
subversion/branches/fs-py/subversion/libsvn_fs_py/tree.h
Propchange: subversion/branches/fs-py/subversion/libsvn_fs_py/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep 30 15:08:09 2011
@@ -8,7 +8,7 @@
/subversion/branches/double-delete/subversion/libsvn_fs_py:870511-872970
/subversion/branches/explore-wc/subversion/libsvn_fs_py:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
/subversion/branches/file-externals/subversion/libsvn_fs_py:871779-873302
-/subversion/branches/fs-py/subversion/libsvn_fs_fs:1154225-1170625
+/subversion/branches/fs-py/subversion/libsvn_fs_fs:1154225-1177691
/subversion/branches/fs-rep-sharing/subversion/libsvn_fs_py:869036-873803
/subversion/branches/fsfs-pack/subversion/libsvn_fs_py:873717-874575
/subversion/branches/gnome-keyring/subversion/libsvn_fs_py:870558-871410
Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/fs.c
URL:
http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/fs.c?rev=1177694&r1=1177693&r2=1177694&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_fs_py/fs.c (original)
+++ subversion/branches/fs-py/subversion/libsvn_fs_py/fs.c Fri Sep 30 15:08:09
2011
@@ -161,8 +161,7 @@ static fs_vtable_t fs_vtable = {
svn_fs_py__unlock,
svn_fs_py__get_lock,
svn_fs_py__get_locks,
- fs_set_errcall,
- svn_fs_py__validate_mergeinfo,
+ fs_set_errcall
};
Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/key-gen.c
URL:
http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/key-gen.c?rev=1177694&r1=1177693&r2=1177694&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_fs_py/key-gen.c (original)
+++ subversion/branches/fs-py/subversion/libsvn_fs_py/key-gen.c Fri Sep 30
15:08:09 2011
@@ -41,8 +41,8 @@
void
svn_fs_py__add_keys(const char *key1, const char *key2, char *result)
{
- int i1 = strlen(key1) - 1;
- int i2 = strlen(key2) - 1;
+ apr_size_t i1 = strlen(key1) - 1;
+ apr_size_t i2 = strlen(key2) - 1;
int i3 = 0;
int val;
int carry = 0;
@@ -79,7 +79,7 @@ svn_fs_py__add_keys(const char *key1, co
void
svn_fs_py__next_key(const char *this, apr_size_t *len, char *next)
{
- int i;
+ apr_ssize_t i;
apr_size_t olen = *len; /* remember the first length */
char c; /* current char */
svn_boolean_t carry = TRUE; /* boolean: do we have a carry or not?
@@ -146,8 +146,8 @@ svn_fs_py__next_key(const char *this, ap
int
svn_fs_py__key_compare(const char *a, const char *b)
{
- int a_len = strlen(a);
- int b_len = strlen(b);
+ apr_size_t a_len = strlen(a);
+ apr_size_t b_len = strlen(b);
int cmp;
if (a_len > b_len)
Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c
URL:
http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c?rev=1177694&r1=1177693&r2=1177694&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c (original)
+++ subversion/branches/fs-py/subversion/libsvn_fs_py/tree.c Fri Sep 30
15:08:09 2011
@@ -3176,127 +3176,6 @@ assemble_history(svn_fs_t *fs,
/* mergeinfo queries */
-/* Implements svn_fs_validate_mergeinfo. */
-svn_error_t *
-svn_fs_py__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo,
- svn_fs_t *fs,
- svn_mergeinfo_t mergeinfo,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
-{
- svn_mergeinfo_t filtered_mergeinfo;
- apr_hash_t *rev_to_sources;
- apr_hash_index_t *hi;
- apr_pool_t *iterpool;
-
- /* A couple easy outs. */
- if (mergeinfo == NULL)
- {
- *validated_mergeinfo = NULL;
- return SVN_NO_ERROR;
- }
- else if (apr_hash_count(mergeinfo) == 0)
- {
- *validated_mergeinfo = apr_hash_make(result_pool);
- return SVN_NO_ERROR;
- }
-
- filtered_mergeinfo = apr_hash_make(scratch_pool);
- rev_to_sources = apr_hash_make(scratch_pool);
-
- /* Since svn_fs_check_path needs an svn_fs_root_t based on a revision,
- we convert MERGEINFO into a mapping of revisions to a hash of source
- paths for efficiency. */
- for (hi = apr_hash_first(scratch_pool, mergeinfo);
- hi;
- hi = apr_hash_next(hi))
- {
- const char *path = svn__apr_hash_index_key(hi);
- apr_array_header_t *rangelist = svn__apr_hash_index_val(hi);
- int i;
-
- for (i = 0; i < rangelist->nelts; i++)
- {
- svn_merge_range_t *range =
- APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *);
- svn_revnum_t j;
-
- for (j = range->start + 1; j <= range->end; j++)
- {
- apr_hash_t *paths_for_rev =
- apr_hash_get(rev_to_sources, &j, sizeof(svn_revnum_t));
-
- /* No hash associated with this rev yet? */
- if (!paths_for_rev)
- {
- svn_revnum_t *rev = apr_palloc(scratch_pool, sizeof(*rev));
-
- *rev = j;
- paths_for_rev = apr_hash_make(scratch_pool);
- apr_hash_set(rev_to_sources, rev,
- sizeof(svn_revnum_t), paths_for_rev);
- }
-
- apr_hash_set(paths_for_rev, path, APR_HASH_KEY_STRING, path);
- }
- }
- }
-
- iterpool = svn_pool_create(scratch_pool);
-
- /* Validate the rev->source MERGEINFO equivalent hash, building the
- validated mergeinfo as we go. */
- for (hi = apr_hash_first(scratch_pool, rev_to_sources);
- hi;
- hi = apr_hash_next(hi))
- {
- const svn_revnum_t *rev = svn__apr_hash_index_key(hi);
- apr_hash_t *paths = svn__apr_hash_index_val(hi);
- apr_pool_t *inner_iterpool;
- apr_hash_index_t *hi2;
- svn_node_kind_t kind;
- svn_fs_root_t *mergeinfo_rev_root;
-
- svn_pool_clear(iterpool);
- inner_iterpool = svn_pool_create(iterpool);
-
- SVN_ERR(svn_fs_py__revision_root(&mergeinfo_rev_root, fs,
- *rev, iterpool));
-
- for (hi2 = apr_hash_first(iterpool, paths);
- hi2;
- hi2 = apr_hash_next(hi2))
- {
- const char *path = svn__apr_hash_index_key(hi2);
-
- svn_pool_clear(inner_iterpool);
- SVN_ERR(svn_fs_py__check_path(&kind, mergeinfo_rev_root,
- path, inner_iterpool));
- if (kind == svn_node_none)
- {
- apr_hash_set(paths, path, APR_HASH_KEY_STRING, NULL);
- }
- else
- {
- svn_mergeinfo_t good_mergeinfo_fragment;
- const char *mergeinfo_str =
- apr_psprintf(inner_iterpool, "%s:%ld", path, *rev);
-
- SVN_ERR(svn_mergeinfo_parse(&good_mergeinfo_fragment,
- mergeinfo_str, scratch_pool));
- SVN_ERR(svn_mergeinfo_merge(filtered_mergeinfo,
- good_mergeinfo_fragment,
- scratch_pool));
- }
- }
- svn_pool_destroy(inner_iterpool);
- }
-
- svn_pool_destroy(iterpool);
- *validated_mergeinfo = svn_mergeinfo_dup(filtered_mergeinfo, result_pool);
- return SVN_NO_ERROR;
-}
-
/* DIR_DAG is a directory DAG node which has mergeinfo in its
descendants. This function iterates over its children. For each
child with immediate mergeinfo, it adds its mergeinfo to
@@ -3399,9 +3278,7 @@ crawl_directory_dag_for_mergeinfo(svn_fs
/* Calculates the mergeinfo for PATH under REV_ROOT using inheritance
type INHERIT. Returns it in *MERGEINFO, or NULL if there is none.
- If *MERGEINFO is inherited and VALIDATE_INHERITED_MERGEINFO is true,
- then *MERGEINFO will only contain path-revs that actually exist in
- repository. The result is allocated in RESULT_POOL; SCRATCH_POOL is
+ The result is allocated in RESULT_POOL; SCRATCH_POOL is
used for temporary allocations.
*/
static svn_error_t *
@@ -3409,7 +3286,6 @@ get_mergeinfo_for_path(svn_mergeinfo_t *
svn_fs_root_t *rev_root,
const char *path,
svn_mergeinfo_inheritance_t inherit,
- svn_boolean_t validate_inherited_mergeinfo,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -3460,6 +3336,8 @@ get_mergeinfo_for_path(svn_mergeinfo_t *
}
}
+ svn_pool_destroy(iterpool);
+
SVN_ERR(svn_fs_py__dag_get_proplist(&proplist, nearest_ancestor->node,
scratch_pool));
mergeinfo_string = apr_hash_get(proplist, SVN_PROP_MERGEINFO,
@@ -3486,7 +3364,6 @@ get_mergeinfo_for_path(svn_mergeinfo_t *
err = NULL;
*mergeinfo = NULL;
}
- svn_pool_destroy(iterpool);
return svn_error_trace(err);
}
}
@@ -3508,14 +3385,8 @@ get_mergeinfo_for_path(svn_mergeinfo_t *
parent_path, nearest_ancestor,
scratch_pool),
result_pool));
-
- if (validate_inherited_mergeinfo)
- SVN_ERR(svn_fs_py__validate_mergeinfo(mergeinfo, rev_root->fs,
- *mergeinfo, result_pool,
- iterpool));
}
- svn_pool_destroy(iterpool);
return SVN_NO_ERROR;
}
@@ -3548,17 +3419,13 @@ add_descendant_mergeinfo(svn_mergeinfo_c
/* Get the mergeinfo for a set of paths, returned in
- *MERGEINFO_CATALOG. If the mergeinfo for any path is inherited
- and VALIDATE_INHERITED_MERGEINFO is true, then the mergeinfo for
- that path in *MERGEINFO_CATALOG will only contain path-revs that
- actually exist in repository. Returned values are allocated in
+ *MERGEINFO_CATALOG. Returned values are allocated in
POOL, while temporary values are allocated in a sub-pool. */
static svn_error_t *
get_mergeinfos_for_paths(svn_fs_root_t *root,
svn_mergeinfo_catalog_t *mergeinfo_catalog,
const apr_array_header_t *paths,
svn_mergeinfo_inheritance_t inherit,
- svn_boolean_t validate_inherited_mergeinfo,
svn_boolean_t include_descendants,
apr_pool_t *pool)
{
@@ -3575,8 +3442,7 @@ get_mergeinfos_for_paths(svn_fs_root_t *
svn_pool_clear(iterpool);
err = get_mergeinfo_for_path(&path_mergeinfo, root, path,
- inherit, validate_inherited_mergeinfo,
- pool, iterpool);
+ inherit, pool, iterpool);
if (err)
{
if (err->apr_err == SVN_ERR_MERGEINFO_PARSE_ERROR)
@@ -3611,7 +3477,6 @@ fs_get_mergeinfo(svn_mergeinfo_catalog_t
svn_fs_root_t *root,
const apr_array_header_t *paths,
svn_mergeinfo_inheritance_t inherit,
- svn_boolean_t validate_inherited_mergeinfo,
svn_boolean_t include_descendants,
apr_pool_t *pool)
{
@@ -3634,7 +3499,7 @@ fs_get_mergeinfo(svn_mergeinfo_catalog_t
/* Retrieve a path -> mergeinfo hash mapping. */
return get_mergeinfos_for_paths(root, catalog, paths,
- inherit, validate_inherited_mergeinfo,
+ inherit,
include_descendants, pool);
}
Modified: subversion/branches/fs-py/subversion/libsvn_fs_py/tree.h
URL:
http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/libsvn_fs_py/tree.h?rev=1177694&r1=1177693&r2=1177694&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/libsvn_fs_py/tree.h (original)
+++ subversion/branches/fs-py/subversion/libsvn_fs_py/tree.h Fri Sep 30
15:08:09 2011
@@ -71,14 +71,6 @@ svn_fs_py__node_created_rev(svn_revnum_t
const char *path,
apr_pool_t *pool);
-/* Implements svn_fs_validate_mergeinfo. */
-svn_error_t *
-svn_fs_py__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo,
- svn_fs_t *fs,
- svn_mergeinfo_t mergeinfo,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */