You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2011/05/24 19:36:09 UTC

svn commit: r1127166 - in /subversion/trunk/subversion: libsvn_client/update.c tests/cmdline/tree_conflict_tests.py

Author: stsp
Date: Tue May 24 17:36:08 2011
New Revision: 1127166

URL: http://svn.apache.org/viewvc?rev=1127166&view=rev
Log:
As part of issue #3779, "actual-only nodes need regression tests",
make 'svn update' skip targets that are tree conflict victims
instead of performing a potentially no-op update on them.

* subversion/libsvn_client/update.c
  (update_internal): Skip targets that are tree-conflict victims.

* subversion/tests/cmdline/tree_conflict_tests.py
  (actual_only_node_behaviour): Adjust test case for commit.

Modified:
    subversion/trunk/subversion/libsvn_client/update.c
    subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py

Modified: subversion/trunk/subversion/libsvn_client/update.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/update.c?rev=1127166&r1=1127165&r2=1127166&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/update.c (original)
+++ subversion/trunk/subversion/libsvn_client/update.c Tue May 24 17:36:08 2011
@@ -206,6 +206,7 @@ update_internal(svn_revnum_t *result_rev
   svn_client__external_func_baton_t efb;
   struct svn_client__dirent_fetcher_baton_t dfb;
   svn_boolean_t server_supports_depth;
+  svn_boolean_t tree_conflicted;
   svn_config_t *cfg = ctx->config ? apr_hash_get(ctx->config,
                                                  SVN_CONFIG_CATEGORY_CONFIG,
                                                  APR_HASH_KEY_STRING) : NULL;
@@ -233,14 +234,20 @@ update_internal(svn_revnum_t *result_rev
   SVN_ERR(svn_wc__node_get_base_rev(&revnum, ctx->wc_ctx, anchor_abspath,
                                     pool));
 
-  if (!SVN_IS_VALID_REVNUM(revnum))
+  /* It does not make sense to update tree-conflict victims. */
+  SVN_ERR(svn_wc_conflicted_p3(NULL, NULL, &tree_conflicted,
+                               ctx->wc_ctx, local_abspath, pool));
+
+  if (!SVN_IS_VALID_REVNUM(revnum) || tree_conflicted)
     {
       if (ctx->notify_func2)
         {
           svn_wc_notify_t *nt;
 
           nt = svn_wc_create_notify(local_abspath,
-                                    svn_wc_notify_update_skip_working_only,
+                                    tree_conflicted
+                                      ? svn_wc_notify_skip
+                                      : svn_wc_notify_update_skip_working_only,
                                     pool);
 
           ctx->notify_func2(ctx->notify_baton2, nt, pool);

Modified: subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py?rev=1127166&r1=1127165&r2=1127166&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py Tue May 24 17:36:08 2011
@@ -1366,8 +1366,9 @@ def actual_only_node_behaviour(sbox):
   # update (up)
   ### update does not fail at all -- needs review
   expected_stdout = [
-   "Updating '%s':\n" % sbox.ospath('A/foo'),
-   "At revision 4.\n",
+   "Skipped '%s'\n" % sbox.ospath('A/foo'),
+   "Summary of conflicts:\n",
+   "  Skipped paths: 1\n",
   ]
   expected_stderr = []
   run_and_verify_svn(None, expected_stdout, expected_stderr,