Author: hwright
Date: Wed Jul 7 06:44:26 2010
New Revision: 961254
URL: http://svn.apache.org/viewvc?rev=961254&view=rev
Log:
Remove a hacky use of a libsvn_wc function, by reusing some existing
libsvn_client code.
* subversion/include/private/svn_wc_private.h
(svn_wc__versioned_file_modcheck): Remove.
* subversion/libsvn_wc/questions.c
(svn_wc__versioned_file_modcheck): Remove.
* subversion/libsvn_client/client.h
(svn_client__get_normalized_stream): New.
* subversion/libsvn_client/merge.c
(files_same_p): Do the comparison manually, using a couple of streams, rather
than with a libsvn_wc API.
* subversion/libsvn_client/cat.c
(cat_local_file): Rename from this...
(svn_client__get_normalized_stream): ...to this.
(svn_client_cat2): Update caller.
Modified:
subversion/trunk/subversion/include/private/svn_wc_private.h
subversion/trunk/subversion/libsvn_client/cat.c
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/merge.c
subversion/trunk/subversion/libsvn_wc/questions.c
Modified: subversion/trunk/subversion/include/private/svn_wc_private.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_wc_private.h?rev=961254&r1=961253&r2=961254&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_wc_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_wc_private.h Wed Jul 7
06:44:26 2010
@@ -73,25 +73,6 @@ svn_wc__changelist_match(svn_wc_context_
apr_hash_t *clhash,
apr_pool_t *scratch_pool);
-
-/* Set *MODIFIED_P to true if VERSIONED_FILE_ABSPATH is modified with respect
- * to BASE_FILE_ABSPATH, or false if it is not. The comparison compensates
- * for VERSIONED_FILE_ABSPATH's eol and keyword properties, but leaves
- * BASE_FILE_ABSPATH alone (as though BASE_FILE_ABSPATH were a text-base file,
- * which it usually is, only sometimes we're calling this on incoming
- * temporary text-bases).
- *
- * If an error is returned, the effect on *MODIFIED_P is undefined.
- *
- * Use SCRATCH_POOL for temporary allocation; WC_CTX is the normal thing.
- */
-svn_error_t *
-svn_wc__versioned_file_modcheck(svn_boolean_t *modified_p,
- svn_wc_context_t *wc_ctx,
- const char *versioned_file_abspath,
- const char *base_file_abspath,
- apr_pool_t *scratch_pool);
-
/**
* Return a boolean answer to the question "Is @a status something that
* should be reported?". @a no_ignore and @a get_all are the same as
Modified: subversion/trunk/subversion/libsvn_client/cat.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/cat.c?rev=961254&r1=961253&r2=961254&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/cat.c (original)
+++ subversion/trunk/subversion/libsvn_client/cat.c Wed Jul 7 06:44:26 2010
@@ -44,18 +44,16 @@
/*** Code. ***/
-/* Helper function to handle copying a potentially translated version of
- local file LOCAL_ABSPATH to OUTPUT. REVISION must be one of the following:
- BASE, COMMITTED, WORKING. Uses SCRATCH_POOL for temporary allocations. */
-static svn_error_t *
-cat_local_file(svn_stream_t **normal_stream,
- svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- const svn_opt_revision_t *revision,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *result_pool,
- apr_pool_t *scratch_pool)
+svn_error_t *
+svn_client__get_normalized_stream(svn_stream_t **normal_stream,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ const svn_opt_revision_t *revision,
+ svn_boolean_t expand_keywords,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool)
{
apr_hash_t *kw = NULL;
svn_subst_eol_style_t style;
@@ -165,7 +163,7 @@ cat_local_file(svn_stream_t **normal_str
/* Wrap the output stream if translation is needed. */
if (eol != NULL || kw != NULL)
- input = svn_subst_stream_translated(input, eol, FALSE, kw, TRUE,
+ input = svn_subst_stream_translated(input, eol, FALSE, kw, expand_keywords,
result_pool);
*normal_stream = input;
@@ -212,9 +210,10 @@ svn_client_cat2(svn_stream_t *out,
svn_stream_t *normal_stream;
SVN_ERR(svn_dirent_get_absolute(&local_abspath, path_or_url, pool));
- SVN_ERR(cat_local_file(&normal_stream, ctx->wc_ctx, local_abspath,
- revision, ctx->cancel_func, ctx->cancel_baton,
- pool, pool));
+ SVN_ERR(svn_client__get_normalized_stream(&normal_stream, ctx->wc_ctx,
+ local_abspath, revision, TRUE,
+ ctx->cancel_func,
ctx->cancel_baton,
+ pool, pool));
/* We don't promise to close output, so disown it to ensure we don't. */
output = svn_stream_disown(output, pool);
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=961254&r1=961253&r2=961254&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Wed Jul 7 06:44:26 2010
@@ -1055,6 +1055,20 @@ svn_client__ensure_revprop_table(apr_has
svn_client_ctx_t *ctx,
apr_pool_t *pool);
+/* Return a potentially translated version of local file LOCAL_ABSPATH
+ in NORMAL_STREAM. REVISION must be one of the following: BASE, COMMITTED,
+ WORKING. Uses SCRATCH_POOL for temporary allocations. */
+svn_error_t *
+svn_client__get_normalized_stream(svn_stream_t **normal_stream,
+ svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ const svn_opt_revision_t *revision,
+ svn_boolean_t expand_keywords,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *result_pool,
+ apr_pool_t *scratch_pool);
+
/* Return true if KIND is a revision kind that is dependent on the working
* copy. Otherwise, return false. */
Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=961254&r1=961253&r2=961254&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Wed Jul 7 06:44:26 2010
@@ -1850,12 +1850,24 @@ files_same_p(svn_boolean_t *same,
scratch_pool));
if (*same)
{
- svn_boolean_t modified;
+ svn_stream_t *mine_stream;
+ svn_stream_t *older_stream;
+ svn_opt_revision_t working_rev;
+
+ working_rev.kind = svn_opt_revision_working;
/* Compare the file content, translating 'mine' to 'normal' form. */
- SVN_ERR(svn_wc__versioned_file_modcheck(&modified, wc_ctx, mine_abspath,
- older_abspath, scratch_pool));
- *same = !modified;
+ SVN_ERR(svn_client__get_normalized_stream(&mine_stream, wc_ctx,
+ mine_abspath, &working_rev,
+ FALSE, NULL, NULL,
+ scratch_pool, scratch_pool));
+
+ SVN_ERR(svn_stream_open_readonly(&older_stream, older_abspath,
+ scratch_pool, scratch_pool));
+
+ SVN_ERR(svn_stream_contents_same2(same, mine_stream, older_stream,
+ scratch_pool));
+
}
return SVN_NO_ERROR;
Modified: subversion/trunk/subversion/libsvn_wc/questions.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/questions.c?rev=961254&r1=961253&r2=961254&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/questions.c (original)
+++ subversion/trunk/subversion/libsvn_wc/questions.c Wed Jul 7 06:44:26 2010
@@ -246,26 +246,6 @@ svn_wc__internal_versioned_file_modcheck
}
svn_error_t *
-svn_wc__versioned_file_modcheck(svn_boolean_t *modified_p,
- svn_wc_context_t *wc_ctx,
- const char *versioned_file_abspath,
- const char *base_file_abspath,
- apr_pool_t *scratch_pool)
-{
- svn_stream_t *pristine_stream;
-
- SVN_ERR_ASSERT(svn_dirent_is_absolute(base_file_abspath));
- SVN_ERR(svn_stream_open_readonly(&pristine_stream, base_file_abspath,
- scratch_pool, scratch_pool));
-
- return svn_error_return(svn_wc__internal_versioned_file_modcheck(
- modified_p, wc_ctx->db, versioned_file_abspath,
- pristine_stream,
- TRUE /* compare_textbases */,
- scratch_pool));
-}
-
-svn_error_t *
svn_wc__internal_text_modified_p(svn_boolean_t *modified_p,
svn_wc__db_t *db,
const char *local_abspath,