You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2010/05/26 16:15:45 UTC

svn commit: r948434 - in /subversion/trunk/subversion/libsvn_wc: adm_files.c adm_files.h workqueue.c

Author: julianfoad
Date: Wed May 26 14:15:45 2010
New Revision: 948434

URL: http://svn.apache.org/viewvc?rev=948434&view=rev
Log:
As another step to avoid exposing a pristine text file's path, introduce and
use a function for getting a pristine text file's size and time stamp.

* subversion/libsvn_wc/adm_files.h,
  subversion/libsvn_wc/adm_files.c
  (svn_wc__get_pristine_text_status): New function.

* subversion/libsvn_wc/workqueue.c
  (log_do_committed): Use svn_wc__get_pristine_text_status().

Modified:
    subversion/trunk/subversion/libsvn_wc/adm_files.c
    subversion/trunk/subversion/libsvn_wc/adm_files.h
    subversion/trunk/subversion/libsvn_wc/workqueue.c

Modified: subversion/trunk/subversion/libsvn_wc/adm_files.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_files.c?rev=948434&r1=948433&r2=948434&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_files.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_files.c Wed May 26 14:15:45 2010
@@ -617,6 +617,25 @@ svn_wc__get_ultimate_base_md5_checksum(c
 
 
 svn_error_t *
+svn_wc__get_pristine_text_status(apr_finfo_t *finfo,
+                                 svn_wc__db_t *db,
+                                 const char *local_abspath,
+                                 apr_pool_t *result_pool,
+                                 apr_pool_t *scratch_pool)
+{
+  const char *text_base_abspath;
+
+  SVN_ERR(svn_wc__text_base_path_to_read(&text_base_abspath,
+                                         db, local_abspath,
+                                         scratch_pool, scratch_pool));
+  SVN_ERR(svn_io_stat(finfo, text_base_abspath,
+                      APR_FINFO_MIN | APR_FINFO_LINK,
+                      result_pool));
+  return SVN_NO_ERROR;
+}
+
+
+svn_error_t *
 svn_wc__prop_path(const char **prop_path,
                   const char *path,
                   svn_wc__db_kind_t node_kind,

Modified: subversion/trunk/subversion/libsvn_wc/adm_files.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_files.h?rev=948434&r1=948433&r2=948434&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_files.h (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_files.h Wed May 26 14:15:45 2010
@@ -170,6 +170,19 @@ svn_wc__text_base_path_to_read(const cha
                                apr_pool_t *result_pool,
                                apr_pool_t *scratch_pool);
 
+/* Set *FINFO to the status of the pristine text of LOCAL_ABSPATH in DB.
+   Only the following fields are guaranteed to be set:
+     APR_FINFO_TYPE
+     APR_FINFO_SIZE
+     APR_FINFO_MTIME
+ */
+svn_error_t *
+svn_wc__get_pristine_text_status(apr_finfo_t *finfo,
+                                 svn_wc__db_t *db,
+                                 const char *local_abspath,
+                                 apr_pool_t *result_pool,
+                                 apr_pool_t *scratch_pool);
+
 #ifndef SVN_EXPERIMENTAL_PRISTINE
 /* Set *RESULT_ABSPATH to the path of the WC-1 "revert-base" text of the
    versioned file LOCAL_ABSPATH in DB.

Modified: subversion/trunk/subversion/libsvn_wc/workqueue.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/workqueue.c?rev=948434&r1=948433&r2=948434&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/workqueue.c (original)
+++ subversion/trunk/subversion/libsvn_wc/workqueue.c Wed May 26 14:15:45 2010
@@ -1448,19 +1448,15 @@ log_do_committed(svn_wc__db_t *db,
           /* The working copy file hasn't been overwritten, meaning
              we need to decide which timestamp to use. */
 
-          const char *base_abspath;
           apr_finfo_t basef_finfo;
           svn_boolean_t modified;
 
           /* If the working file was overwritten (due to re-translation)
              or touched (due to +x / -x), then use *that* textual
              timestamp instead. */
-          SVN_ERR(svn_wc__text_base_path_to_read(&base_abspath,
-                                                 db, local_abspath,
-                                                 pool, pool));
-          SVN_ERR(svn_io_stat(&basef_finfo, base_abspath,
-                              APR_FINFO_MIN | APR_FINFO_LINK,
-                              pool));
+          SVN_ERR(svn_wc__get_pristine_text_status(&basef_finfo,
+                                                   db, local_abspath,
+                                                   pool, pool));
 
           /* Verify that the working file is the same as the base file
              by comparing file sizes, then timestamps and the contents
@@ -1472,6 +1468,11 @@ log_do_committed(svn_wc__db_t *db,
           modified = finfo.size != basef_finfo.size;
           if (finfo.mtime != basef_finfo.mtime && ! modified)
             {
+              const char *base_abspath;
+
+              SVN_ERR(svn_wc__text_base_path_to_read(&base_abspath,
+                                                     db, local_abspath,
+                                                     pool, pool));
               SVN_ERR(svn_wc__internal_versioned_file_modcheck(
                         &modified,
                         db, local_abspath, base_abspath, FALSE, pool));