[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[PATCH] Attempt to add entries caching

From: Justin Erenkrantz <jerenkrantz_at_apache.org>
Date: 2002-08-06 17:53:30 CEST

I tried my best to address Philip's concern about switching the
API all at once to support caching by passing the svn_wc_adm_access_t
to most libsvn_wc functions and it is just about impossible for me to
find the time to do it. It is just one of those house of cards where
everything has to change and it isn't always clear where the baton
should be originating.

So, either someone would need to finish this patch and get it to
compile. Or, I can add the caching-only API so that we can get the
benefit of the caching without having to change all of the code.
Unfortuantely, I believe Philip is pretty much -1 on adding a
caching-only API. -- justin

Index: ./subversion/include/svn_wc.h
===================================================================
--- ./subversion/include/svn_wc.h
+++ ./subversion/include/svn_wc.h Sat Aug 3 12:10:54 2002
@@ -316,18 +316,24 @@
    w.r.t. the base revision, else set *MODIFIED_P to zero.
    FILENAME is a path to the file, not just a basename.
 
+ ADM_ACCESS is the admin baton for the current directory.
+
    If FILENAME does not exist, consider it unmodified. If it exists
    but is not under revision control (not even scheduled for
    addition), return the error SVN_ERR_ENTRY_NOT_FOUND.
 */
 svn_error_t *svn_wc_text_modified_p (svn_boolean_t *modified_p,
+ svn_wc_adm_access_t *adm_access,
                                      const char *filename,
                                      apr_pool_t *pool);
 
 
 /* Set *MODIFIED_P to non-zero if PATH's properties are modified
- w.r.t. the base revision, else set MODIFIED_P to zero. */
+ w.r.t. the base revision, else set MODIFIED_P to zero.
+ ADM_ACCESS is the admin baton for the current directory.
+ */
 svn_error_t *svn_wc_props_modified_p (svn_boolean_t *modified_p,
+ svn_wc_adm_access_t *adm_access,
                                       const char *path,
                                       apr_pool_t *pool);
 
@@ -1384,6 +1390,7 @@
    notification is not needed. */
 svn_error_t *
 svn_wc_revert (const char *path,
+ svn_wc_adm_access_t *adm_access,
                svn_boolean_t recursive,
                svn_wc_notify_func_t notify_func,
                void *notify_baton,
Index: ./subversion/libsvn_wc/questions.h
===================================================================
--- ./subversion/libsvn_wc/questions.h
+++ ./subversion/libsvn_wc/questions.h Fri Aug 2 10:13:44 2002
@@ -46,6 +46,7 @@
  */
 svn_error_t *
 svn_wc__timestamps_equal_p (svn_boolean_t *equal_p,
+ svn_wc_adm_access_t *adm_access,
                             const char *path,
                             const enum svn_wc__timestamp_kind timestamp_kind,
                             apr_pool_t *pool);
Index: ./subversion/libsvn_wc/props.c
===================================================================
--- ./subversion/libsvn_wc/props.c
+++ ./subversion/libsvn_wc/props.c Fri Aug 2 10:14:41 2002
@@ -1246,6 +1246,7 @@
 
 svn_error_t *
 svn_wc_props_modified_p (svn_boolean_t *modified_p,
+ svn_wc_adm_access_t *adm_access,
                          const char *path,
                          apr_pool_t *pool)
 {
@@ -1329,7 +1330,7 @@
       
   /* See if the local file's prop timestamp is the same as the one
      recorded in the administrative directory. */
- SVN_ERR (svn_wc__timestamps_equal_p (&equal_timestamps, path,
+ SVN_ERR (svn_wc__timestamps_equal_p (&equal_timestamps, adm_access, path,
                                        svn_wc__prop_time, subpool));
   if (equal_timestamps)
     {
Index: ./subversion/libsvn_wc/diff.c
===================================================================
--- ./subversion/libsvn_wc/diff.c
+++ ./subversion/libsvn_wc/diff.c Fri Aug 2 10:13:15 2002
@@ -145,6 +145,9 @@
      working copy. */
   const char *path;
 
+ /* Lock on the current directory. */
+ svn_wc_adm_access_t *adm_access;
+
  /* Identifies those directory elements that get compared while running the
     crawler. These elements should not be compared again when recursively
     looking for local only diffs. */
@@ -266,6 +269,9 @@
                                          parent_baton->pool);
       else
         dir_baton->path = apr_pstrdup (parent_baton->pool, parent_baton->path);
+
+ svn_wc_adm_open(&dir_baton->adm_access, parent_baton->adm_access,
+ dir_baton->path, TRUE, FALSE, dir_baton->pool);
     }
   else
     {
@@ -274,6 +280,9 @@
                                          dir_baton->pool);
       else
         dir_baton->path = apr_pstrdup (dir_baton->pool, edit_baton->anchor);
+
+ svn_wc_adm_open(&dir_baton->adm_access, NULL,
+ dir_baton->path, TRUE, FALSE, dir_baton->pool);
     }
 
   return dir_baton;
@@ -396,7 +405,8 @@
                 path,
                 dir_baton->edit_baton->callback_baton));
 
- SVN_ERR (svn_wc_props_modified_p (&modified, path, pool));
+ SVN_ERR (svn_wc_props_modified_p (&modified, dir_baton->adm_access,
+ path, pool));
       if (modified)
         {
           apr_array_header_t *propchanges;
@@ -414,7 +424,8 @@
       break;
 
     default:
- SVN_ERR (svn_wc_text_modified_p (&modified, path, pool));
+ SVN_ERR (svn_wc_text_modified_p (&modified, dir_baton->adm_access,
+ path, pool));
       if (modified)
         {
           const char *translated;
@@ -445,7 +456,8 @@
             return err;
         }
 
- SVN_ERR (svn_wc_props_modified_p (&modified, path, pool));
+ SVN_ERR (svn_wc_props_modified_p (&modified, dir_baton->adm_access,
+ path, pool));
       if (modified)
         {
           apr_array_header_t *propchanges;
@@ -503,8 +515,8 @@
     {
       svn_boolean_t modified;
 
- SVN_ERR (svn_wc_props_modified_p (&modified, dir_baton->path,
- dir_baton->pool));
+ SVN_ERR (svn_wc_props_modified_p (&modified, dir_baton->adm_access,
+ dir_baton->path, dir_baton->pool));
       if (modified)
         {
           apr_array_header_t *propchanges;
Index: ./subversion/libsvn_wc/adm_ops.c
===================================================================
--- ./subversion/libsvn_wc/adm_ops.c
+++ ./subversion/libsvn_wc/adm_ops.c Sat Aug 3 12:10:57 2002
@@ -994,6 +994,7 @@
    Use POOL for any temporary allocations.*/
 static svn_error_t *
 revert_admin_things (const char *parent_dir,
+ svn_wc_adm_access_t *adm_access,
                      const char *name,
                      svn_wc_entry_t *entry,
                      apr_uint32_t *modify_flags,
@@ -1011,7 +1012,7 @@
     fullpath = svn_path_join (fullpath, name, pool);
 
   /* Check for prop changes. */
- SVN_ERR (svn_wc_props_modified_p (&modified_p, fullpath, pool));
+ SVN_ERR (svn_wc_props_modified_p (&modified_p, adm_access, fullpath, pool));
   if (modified_p)
     {
       svn_node_kind_t working_props_kind;
@@ -1077,7 +1078,8 @@
   if (entry->kind == svn_node_file)
     {
       SVN_ERR (svn_io_check_path (fullpath, &kind, pool));
- SVN_ERR (svn_wc_text_modified_p (&modified_p, fullpath, pool));
+ SVN_ERR (svn_wc_text_modified_p (&modified_p, adm_access, fullpath,
+ pool));
       if ((modified_p) || (kind == svn_node_none))
         {
           /* If there are textual mods (or if the working file is
@@ -1159,6 +1161,7 @@
 
 svn_error_t *
 svn_wc_revert (const char *path,
+ svn_wc_adm_access_t *adm_access,
                svn_boolean_t recursive,
                svn_wc_notify_func_t notify_func,
                void *notify_baton,
@@ -1215,14 +1218,11 @@
          entry. */
       svn_boolean_t was_deleted = FALSE;
       const char *parent, *basey;
- svn_wc_adm_access_t *adm_access;
 
       svn_path_split_nts (path, &parent, &basey, pool);
       if (entry->kind == svn_node_file)
         {
           was_deleted = entry->deleted;
- SVN_ERR (svn_wc_adm_open (&adm_access, NULL, parent, TRUE, FALSE,
- pool));
         }
       else if (entry->kind == svn_node_dir)
         {
@@ -1232,8 +1232,6 @@
           parents_entry = apr_hash_get (entries, basey, APR_HASH_KEY_STRING);
           if (parents_entry)
             was_deleted = parents_entry->deleted;
- SVN_ERR (svn_wc_adm_open (&adm_access, NULL, path, TRUE, TRUE,
- pool));
         }
 
       /* Remove the item from revision control. */
@@ -1243,7 +1241,6 @@
       else
         SVN_ERR (svn_wc_remove_from_revision_control (adm_access, bname,
                                                       FALSE, pool));
- SVN_ERR (svn_wc_adm_close (adm_access));
 
       /* Recursivity is taken care of by svn_wc_remove_from_revision_control,
          and we've definitely reverted PATH at this point. */
@@ -1278,11 +1275,11 @@
     {
       /* Revert the prop and text mods (if any). */
       if (entry->kind == svn_node_file)
- SVN_ERR (revert_admin_things (p_dir, bname, entry, &modify_flags,
- pool));
+ SVN_ERR (revert_admin_things (p_dir, adm_access, bname, entry,
+ &modify_flags, pool));
       if (entry->kind == svn_node_dir)
- SVN_ERR (revert_admin_things (path, NULL, entry, &modify_flags,
- pool));
+ SVN_ERR (revert_admin_things (path, adm_access, NULL, entry,
+ &modify_flags, pool));
     }
 
   /* Deletions and replacements. */
@@ -1291,11 +1288,11 @@
     {
       /* Revert the prop and text mods (if any). */
       if (entry->kind == svn_node_file)
- SVN_ERR (revert_admin_things (p_dir, bname, entry, &modify_flags,
- pool));
+ SVN_ERR (revert_admin_things (p_dir, adm_access, bname, entry,
+ &modify_flags, pool));
       if (entry->kind == svn_node_dir)
- SVN_ERR (revert_admin_things (path, NULL, entry, &modify_flags,
- pool));
+ SVN_ERR (revert_admin_things (path, adm_access, NULL, entry,
+ &modify_flags, pool));
 
       modify_flags |= SVN_WC__ENTRY_MODIFY_SCHEDULE;
     }
@@ -1349,6 +1346,10 @@
       apr_hash_t *entries;
       apr_hash_index_t *hi;
       apr_pool_t *subpool = svn_pool_create (pool);
+ svn_wc_adm_access_t *child_adm_access;
+
+ svn_wc_adm_open(&child_adm_access, adm_access, path, TRUE, TRUE,
+ pool);
 
       SVN_ERR (svn_wc_entries_read (&entries, path, FALSE, pool));
       for (hi = apr_hash_first (pool, entries); hi; hi = apr_hash_next (hi))
@@ -1369,13 +1370,15 @@
           full_entry_path = svn_path_join (path, keystring, subpool);
 
           /* Revert the entry. */
- SVN_ERR (svn_wc_revert (full_entry_path, TRUE,
+ SVN_ERR (svn_wc_revert (full_entry_path, child_adm_access, TRUE,
                                   notify_func, notify_baton, subpool));
 
           svn_pool_clear (subpool);
         }
 
         svn_pool_destroy (subpool);
+
+ svn_wc_adm_close(child_adm_access);
     }
   
   return SVN_NO_ERROR;
@@ -1418,8 +1421,8 @@
 
       if (destroy_wf)
         /* Check for local mods. before removing entry */
- SVN_ERR (svn_wc_text_modified_p (&text_modified_p, full_path,
- subpool));
+ SVN_ERR (svn_wc_text_modified_p (&text_modified_p, adm_access,
+ full_path, subpool));
 
       /* Remove NAME from PATH's entries file: */
       SVN_ERR (svn_wc_entries_read (&entries,
Index: ./subversion/libsvn_wc/status.c
===================================================================
--- ./subversion/libsvn_wc/status.c
+++ ./subversion/libsvn_wc/status.c Fri Aug 2 10:17:21 2002
@@ -94,6 +94,7 @@
 */
 static svn_error_t *
 assemble_status (svn_wc_status_t **status,
+ svn_wc_adm_access_t *adm_access,
                  const char *path,
                  svn_wc_entry_t *entry,
                  svn_boolean_t get_all,
@@ -155,11 +156,11 @@
     final_prop_status = svn_wc_status_normal;
 
   /* If the entry has a property file, see if it has local changes. */
- SVN_ERR (svn_wc_props_modified_p (&prop_modified_p, path, pool));
+ SVN_ERR (svn_wc_props_modified_p (&prop_modified_p, adm_access, path, pool));
   
   /* If the entry is a file, check for textual modifications */
   if (entry->kind == svn_node_file)
- SVN_ERR (svn_wc_text_modified_p (&text_modified_p, path, pool));
+ SVN_ERR (svn_wc_text_modified_p (&text_modified_p, adm_access, path, pool));
   
   if (text_modified_p)
     final_text_status = svn_wc_status_modified;
@@ -265,6 +266,7 @@
    and store it in STATUSHASH. */
 static svn_error_t *
 add_status_structure (apr_hash_t *statushash,
+ svn_wc_adm_access_t *adm_access,
                       const char *path,
                       svn_wc_entry_t *entry,
                       svn_boolean_t get_all,
@@ -273,7 +275,7 @@
 {
   svn_wc_status_t *statstruct;
   
- SVN_ERR (assemble_status (&statstruct, path, entry,
+ SVN_ERR (assemble_status (&statstruct, adm_access, path, entry,
                             get_all, strict, pool));
   if (statstruct)
     apr_hash_set (statushash, path, APR_HASH_KEY_STRING, statstruct);
@@ -287,6 +289,7 @@
    allocating everything in POOL. */
 static svn_error_t *
 add_unversioned_items (const char *path,
+ svn_wc_adm_access_t *adm_access,
                        apr_hash_t *entries,
                        apr_hash_t *statushash,
                        svn_boolean_t no_ignore,
@@ -355,6 +358,7 @@
           
           /* Add this item to the status hash. */
           SVN_ERR (add_status_structure (statushash,
+ adm_access,
                                          printable_path,
                                          NULL, /* no entry */
                                          FALSE,
@@ -456,8 +460,8 @@
       SVN_ERR (svn_wc_entries_read (&entries, path, FALSE, pool));
 
       /* Add the unversioned items to the status output. */
- SVN_ERR (add_unversioned_items (path, entries, statushash,
- no_ignore, pool));
+ SVN_ERR (add_unversioned_items (path, adm_access, entries,
+ statushash, no_ignore, pool));
 
       /* Loop over entries hash */
       for (hi = apr_hash_first (pool, entries); hi; hi = apr_hash_next (hi))
Index: ./subversion/libsvn_wc/lock.c
===================================================================
--- ./subversion/libsvn_wc/lock.c
+++ ./subversion/libsvn_wc/lock.c Fri Aug 2 23:46:07 2002
@@ -65,8 +65,6 @@
    /* LOCK_EXISTS is set TRUE when the write lock exists */
    svn_boolean_t lock_exists;
 
-#if 0 /* How cacheing might work one day */
-
    /* ENTRIES_MODIFED is set TRUE when the entries cached in ENTRIES have
       been modified from the original values read from the file. */
    svn_boolean_t entries_modified;
@@ -75,7 +73,10 @@
       contents if this access baton has an appropriate lock. Otherwise
       ENTRIES will be NULL. */
    apr_hash_t *entries;
-#endif
+ /* NON_DELETED_ENTRIES is a copy of ENTRIES, but it does not contain
+ * any deleted items. If the access baton does not have an appropriate
+ * lock, NON_DELETED_ENTRIES will be NULL. */
+ apr_hash_t *non_deleted_entries;
 
    /* SET is a hash of svn_wc_adm_access_t* keyed on char* representing the
       path to other directories that are also locked. */
@@ -252,9 +253,9 @@
       if (! associated->set)
         {
           associated->set = apr_hash_make (associated->pool);
- apr_hash_set (associated->set, associated->path, APR_HASH_KEY_STRING,
- associated);
         }
+ apr_hash_set (associated->set, associated->path, APR_HASH_KEY_STRING,
+ associated);
     }
 
   if (tree_lock)
Index: ./subversion/libsvn_wc/questions.c
===================================================================
--- ./subversion/libsvn_wc/questions.c
+++ ./subversion/libsvn_wc/questions.c Thu Aug 1 20:38:44 2002
@@ -123,6 +123,7 @@
    should be one of the enumerated type above. */
 svn_error_t *
 svn_wc__timestamps_equal_p (svn_boolean_t *equal_p,
+ svn_wc_adm_access_t *adm_access,
                             const char *path,
                             const enum svn_wc__timestamp_kind timestamp_kind,
                             apr_pool_t *pool)
@@ -314,6 +315,7 @@
 
 svn_error_t *
 svn_wc_text_modified_p (svn_boolean_t *modified_p,
+ svn_wc_adm_access_t *adm_access,
                         const char *filename,
                         apr_pool_t *pool)
 {
@@ -335,8 +337,9 @@
      wrong in certain rare cases, but with the addition of a forced
      delay after commits (see revision 419 and issue #542) it's highly
      unlikely to be a problem. */
- SVN_ERR (svn_wc__timestamps_equal_p (&equal_timestamps, filename,
- svn_wc__text_time, subpool));
+ SVN_ERR (svn_wc__timestamps_equal_p (&equal_timestamps, adm_access,
+ filename, svn_wc__text_time,
+ subpool));
   if (equal_timestamps)
     {
       *modified_p = FALSE;
Index: ./subversion/libsvn_client/revert.c
===================================================================
--- ./subversion/libsvn_client/revert.c
+++ ./subversion/libsvn_client/revert.c Fri Aug 2 10:03:58 2002
@@ -41,9 +41,16 @@
                    void *notify_baton,
                    apr_pool_t *pool)
 {
- svn_error_t *err = svn_wc_revert (path, recursive,
- notify_func, notify_baton,
- pool);
+ svn_wc_adm_access_t *adm_access;
+ svn_error_t *err;
+
+ SVN_ERR(svn_wc_adm_open(&adm_access, NULL, path, TRUE, TRUE, pool));
+
+ err = svn_wc_revert (path, adm_access, recursive,
+ notify_func, notify_baton,
+ pool);
+
+ SVN_ERR(svn_wc_adm_close(adm_access));
 
   /* Sleep for one second to ensure timestamp integrity. */
   apr_sleep (APR_USEC_PER_SEC * 1);
Index: ./subversion/libsvn_client/diff.c
===================================================================
--- ./subversion/libsvn_client/diff.c
+++ ./subversion/libsvn_client/diff.c Fri Aug 2 09:52:07 2002
@@ -285,6 +285,7 @@
 
 static svn_error_t *
 merge_file_changed (svn_wc_notify_state_t *state,
+ svn_wc_adm_access_t *adm_access,
                     const char *mine,
                     const char *older,
                     const char *yours,
@@ -307,7 +308,7 @@
      diff-editor-mechanisms are doing the hard work of getting the
      fulltexts! */
 
- SVN_ERR (svn_wc_text_modified_p (&has_local_mods, mine, subpool));
+ SVN_ERR (svn_wc_text_modified_p (&has_local_mods, adm_access, mine, subpool));
 
   err = svn_wc_merge (older, yours, mine,
                       left_label, right_label, target_label,
@@ -327,7 +328,8 @@
       /* It's possible that the merged changes were already present,
          so that the file still is not modified w.r.t. text base.
          Therefore we test again, in order to report state accurately. */
- SVN_ERR (svn_wc_text_modified_p (&has_local_mods, mine, subpool));
+ SVN_ERR (svn_wc_text_modified_p (&has_local_mods, adm_access, mine,
+ subpool));
       if (has_local_mods)
         *state = svn_wc_notify_state_modified;
       else
Index: ./subversion/libsvn_client/copy.c
===================================================================
--- ./subversion/libsvn_client/copy.c
+++ ./subversion/libsvn_client/copy.c Thu Aug 1 21:15:04 2002
@@ -532,6 +532,7 @@
 
   /* Crawl the working copy for commit items. */
   if ((cmt_err = svn_client__get_copy_committables (&committables,
+ adm_access,
                                                     base_url,
                                                     base_path,
                                                     pool)))
Index: ./subversion/libsvn_client/client.h
===================================================================
--- ./subversion/libsvn_client/client.h
+++ ./subversion/libsvn_client/client.h Fri Aug 2 23:46:09 2002
@@ -329,6 +329,7 @@
    found in TARGETS will not be crawled for modifications. */
 svn_error_t *
 svn_client__harvest_committables (apr_hash_t **committables,
+ svn_wc_adm_access_t *adm_access,
                                   const char *parent_dir,
                                   apr_array_header_t *targets,
                                   svn_boolean_t nonrecursive,
@@ -343,6 +344,7 @@
    to a new repository URL (NEW_URL). */
 svn_error_t *
 svn_client__get_copy_committables (apr_hash_t **committables,
+ svn_wc_adm_access_t *adm_access,
                                    const char *new_url,
                                    const char *target,
                                    apr_pool_t *pool);
Index: ./subversion/libsvn_client/commit_util.c
===================================================================
--- ./subversion/libsvn_client/commit_util.c
+++ ./subversion/libsvn_client/commit_util.c Tue Aug 6 08:43:20 2002
@@ -107,6 +107,7 @@
    added with history as URL. */
 static svn_error_t *
 harvest_committables (apr_hash_t *committables,
+ svn_wc_adm_access_t *adm_access,
                       const char *path,
                       const char *url,
                       const char *copyfrom_url,
@@ -124,6 +125,7 @@
   const char *p_path;
   svn_boolean_t tconflict, pconflict;
   const char *cf_url = NULL;
+ svn_wc_adm_access_t *child_adm_access = NULL;
 
   assert (entry);
   assert (url);
@@ -145,7 +147,11 @@
          recurse anyway, so... ) */
       svn_error_t *err;
       svn_wc_entry_t *e = NULL;
- err = svn_wc_entries_read (&entries, path, FALSE, subpool);
+
+ svn_wc_adm_open(&child_adm_access, adm_access, path, TRUE, TRUE,
+ subpool);
+
+ err = svn_wc_entries_read (&entries, path, FALSE, subpool)
       if (err)
         {
           svn_error_clear_all (err);
@@ -251,14 +257,15 @@
   if (state_flags & SVN_CLIENT_COMMIT_ITEM_ADD)
     {
       /* See if there are property modifications to send. */
- SVN_ERR (svn_wc_props_modified_p (&prop_mod, path, subpool));
+ SVN_ERR (svn_wc_props_modified_p (&prop_mod, adm_access, path, subpool));
 
       /* Regular adds of files have text mods, but for copies we have
          to test for textual mods. Directories simply don't have text! */
       if (entry->kind == svn_node_file)
         {
           if (state_flags & SVN_CLIENT_COMMIT_ITEM_IS_COPY)
- SVN_ERR (svn_wc_text_modified_p (&text_mod, path, subpool));
+ SVN_ERR (svn_wc_text_modified_p (&text_mod, adm_access, path,
+ subpool));
           else
             text_mod = TRUE;
         }
@@ -271,8 +278,10 @@
     {
       /* Check for local mods: text+props for files, props alone for dirs. */
       if (entry->kind == svn_node_file)
- SVN_ERR (svn_wc_text_modified_p (&text_mod, path, subpool));
- SVN_ERR (svn_wc_props_modified_p (&prop_mod, path, subpool));
+ SVN_ERR (svn_wc_text_modified_p (&text_mod, adm_access, path,
+ subpool));
+ SVN_ERR (svn_wc_props_modified_p (&prop_mod, adm_access, path,
+ subpool));
     }
 
   /* Set text/prop modification flags accordingly. */
@@ -358,7 +367,7 @@
 
           /* Recurse. */
           SVN_ERR (harvest_committables
- (committables, full_path,
+ (committables, child_adm_access, full_path,
                     used_url ? used_url : this_entry->url,
                     this_cf_url,
                     (svn_wc_entry_t *)val,
@@ -380,6 +389,7 @@
 
 svn_error_t *
 svn_client__harvest_committables (apr_hash_t **committables,
+ svn_wc_adm_access_t *adm_access,
                                   const char *parent_dir,
                                   apr_array_header_t *targets,
                                   svn_boolean_t nonrecursive,
@@ -476,7 +486,7 @@
            target);
 
       /* Handle our TARGET. */
- SVN_ERR (harvest_committables (*committables, target,
+ SVN_ERR (harvest_committables (*committables, adm_access, target,
                                      url, NULL, entry, NULL, FALSE, FALSE,
                                      nonrecursive, pool));
 
@@ -490,6 +500,7 @@
 
 svn_error_t *
 svn_client__get_copy_committables (apr_hash_t **committables,
+ svn_wc_adm_access_t *adm_access,
                                    const char *new_url,
                                    const char *target,
                                    apr_pool_t *pool)
@@ -506,7 +517,7 @@
       (SVN_ERR_ENTRY_NOT_FOUND, 0, NULL, pool, target);
       
   /* Handle our TARGET. */
- SVN_ERR (harvest_committables (*committables, target,
+ SVN_ERR (harvest_committables (*committables, adm_access, target,
                                  new_url, entry->url, entry, NULL,
                                  FALSE, TRUE, FALSE, pool));
 
Index: ./subversion/libsvn_client/commit.c
===================================================================
--- ./subversion/libsvn_client/commit.c
+++ ./subversion/libsvn_client/commit.c Fri Aug 2 23:46:09 2002
@@ -790,6 +790,7 @@
 
   /* Crawl the working copy for commit items. */
   if ((cmt_err = svn_client__harvest_committables (&committables,
+ base_dir_access,
                                                    base_dir,
                                                    rel_targets,
                                                    nonrecursive,

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Aug 6 17:54:03 2002

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.