HELP! Need more eyes on this.
From: <cmpilato_at_collab.net>
Date: 2002-01-17 04:22:41 CET
I tried to make the following patch to turn off deltification of
Here's the log and patch.
--
* subversion/libsvn_fs/node-rev.c
(deltify): No longer deltify directory entries lists (the 'data'
representation for a directory node).
Index: ./subversion/libsvn_fs/node-rev.c
===================================================================
--- ./subversion/libsvn_fs/node-rev.c
+++ ./subversion/libsvn_fs/node-rev.c Wed Jan 16 16:57:00 2002
@@ -97,6 +97,18 @@
*source_pkey, /* source property rep key */
*source_dkey; /* source data rep key */
+ svn_fs_root_t *root;
+ int is_dir;
+ svn_stringbuf_t *s_id;
+
+ /* Get an ID root... */
+ SVN_ERR (svn_fs_id_root (&root, fs, trail->pool));
+
+ /* ...so we can detect if TARGET is a directory (we won't be
+ deltifying directory entries lists. */
+ s_id = svn_fs_unparse_id (target_id, trail->pool);
+ svn_fs_is_dir (&is_dir, root, s_id->data, trail->pool);
+
/* Turn those IDs into skels, so we can get the rep keys. */
SVN_ERR (svn_fs__get_node_revision (&target_nr, fs, target_id, trail));
SVN_ERR (svn_fs__get_node_revision (&source_nr, fs, source_id, trail));
@@ -117,41 +129,45 @@
/* Target property key. */
target_pkey_skel = SVN_FS__NR_PROP_KEY (target_nr);
- if (target_pkey_skel->len != 0) {
- target_pkey = apr_pstrndup (trail->pool,
- target_pkey_skel->data,
- target_pkey_skel->len);
- }
+ if (target_pkey_skel->len != 0)
+ {
+ target_pkey = apr_pstrndup (trail->pool,
+ target_pkey_skel->data,
+ target_pkey_skel->len);
+ }
else
target_pkey = NULL;
/* Target data key. */
target_dkey_skel = SVN_FS__NR_DATA_KEY (target_nr);
- if (target_dkey_skel->len != 0) {
- target_dkey = apr_pstrndup (trail->pool,
- target_dkey_skel->data,
- target_dkey_skel->len);
- }
+ if (target_dkey_skel->len != 0)
+ {
+ target_dkey = apr_pstrndup (trail->pool,
+ target_dkey_skel->data,
+ target_dkey_skel->len);
+ }
else
target_dkey = NULL;
/* Source property key. */
source_pkey_skel = SVN_FS__NR_PROP_KEY (source_nr);
- if (source_pkey_skel->len != 0) {
- source_pkey = apr_pstrndup (trail->pool,
- source_pkey_skel->data,
- source_pkey_skel->len);
- }
+ if (source_pkey_skel->len != 0)
+ {
+ source_pkey = apr_pstrndup (trail->pool,
+ source_pkey_skel->data,
+ source_pkey_skel->len);
+ }
else
source_pkey = NULL;
/* Source data key. */
source_dkey_skel = SVN_FS__NR_DATA_KEY (source_nr);
- if (source_dkey_skel->len != 0) {
- source_dkey = apr_pstrndup (trail->pool,
- source_dkey_skel->data,
- source_dkey_skel->len);
- }
+ if (source_dkey_skel->len != 0)
+ {
+ source_dkey = apr_pstrndup (trail->pool,
+ source_dkey_skel->data,
+ source_dkey_skel->len);
+ }
else
source_dkey = NULL;
}
@@ -160,7 +176,7 @@
&& (strcmp (target_pkey, source_pkey)))
SVN_ERR (svn_fs__rep_deltify (fs, target_pkey, source_pkey, trail));
- if ((target_dkey && source_dkey)
+ if ((target_dkey && source_dkey && (! is_dir))
&& (strcmp (target_dkey, source_dkey)))
SVN_ERR (svn_fs__rep_deltify (fs, target_dkey, source_dkey, trail));
@@ -301,7 +317,8 @@
/* Destroy the subpool. */
svn_pool_destroy (subpool);
- /* If we found a valid source ID, perform the deltification step. */
+ /* If we found a valid source ID, perform the deltification step
+ (though we only deltify the data reps for non-dirs). */
if (source_id)
SVN_ERR (deltify (target_id, source_id, args->fs, trail));
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:56 2006
|
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.