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));