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,


Reply via email to