[prev in list] [next in list] [prev in thread] [next in thread] 

List:       subversion-commits
Subject:    svn commit: r892902 - in /subversion/trunk/subversion: libsvn_client/url.c tests/cmdline/mergeinfo_t
From:       pburba () apache ! org
Date:       2009-12-21 17:45:34
Message-ID: 20091221174534.ECD4023888D1 () eris ! apache ! org
[Download RAW message or body]

Author: pburba
Date: Mon Dec 21 17:45:34 2009
New Revision: 892902

URL: http://svn.apache.org/viewvc?rev=892902&view=rev
Log:
Fix 'svn mergeinfo' bug when target is a WC path pegged at HEAD or DATE.

This fixes the failing JavaHL test BasicTests.java:testBasicMerge.
See http://svn.haxx.se/dev/archive-2009-12/0346.shtml.

* subversion/libsvn_client/url.c
  (svn_client__derive_location): Follow-up to r886880; contact the server if
   asking about a working copy path pegged at DATE or HEAD.  Previously we
   tried to resolve the peg rev in this case with a call to
   svn_client__entry_location(), but since r886880 that function has
   returned an error if asked about revisions only the repos knows about.

* subversion/tests/cmdline/mergeinfo_tests.py
  (mergeinfo_on_pegged_wc_path): Fix typo, this test should have tested
   WC paths pegged at HEAD, but was instead twice testing WC paths pegged
   at BASE.  Also add --show-revs=eligible variants of the tests.

Modified:
    subversion/trunk/subversion/libsvn_client/url.c
    subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py

Modified: subversion/trunk/subversion/libsvn_client/url.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/url.c?rev=892902&r1=892901&r2=892902&view=diff
 ==============================================================================
--- subversion/trunk/subversion/libsvn_client/url.c (original)
+++ subversion/trunk/subversion/libsvn_client/url.c Mon Dec 21 17:45:34 2009
@@ -93,9 +93,17 @@
      it into a URL. */
   if (! svn_path_is_url(abspath_or_url))
     {
-      SVN_ERR(svn_client__entry_location(url, peg_revnum, ctx->wc_ctx,
-                                         abspath_or_url, peg_revision->kind,
-                                         result_pool, scratch_pool));
+      /* If we need to contact the repository for *PEG_REVNUM just get
+         the *URL now.  Otherwise the working copy has all the information
+         we need. */
+      if (peg_revision->kind == svn_opt_revision_date
+          || peg_revision->kind == svn_opt_revision_head)
+        SVN_ERR(svn_wc__node_get_url(url, ctx->wc_ctx, abspath_or_url,
+                                     result_pool, scratch_pool));
+      else
+        SVN_ERR(svn_client__entry_location(url, peg_revnum, ctx->wc_ctx,
+                                           abspath_or_url, peg_revision->kind,
+                                           result_pool, scratch_pool));
     }
   else
     {

Modified: subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py?rev=892902&r1=892901&r2=892902&view=diff
 ==============================================================================
--- subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py Mon Dec 21 17:45:34 \
2009 @@ -383,7 +383,7 @@
                                      'ci', wc_dir,
                                      '-m', 'Merge r5')
 
-  # Ask for merged revisions to A_COPY pegged at various values.
+  # Ask for merged and eligible revisions to A_COPY pegged at various values.
   # Prior to issue #3180 fix the peg revision was ignored.
   #
   # A_COPY pegged to non-existent revision
@@ -399,7 +399,7 @@
   # A_COPY@HEAD
   svntest.actions.run_and_verify_mergeinfo(
     adjust_error_for_server_version(''),
-    ['3','5','6'], A_path, A_COPY_path + '@BASE', '--show-revs', 'merged')
+    ['3','5','6'], A_path, A_COPY_path + '@HEAD', '--show-revs', 'merged')
 
   # A_COPY@4 (Prior to any merges)
   svntest.actions.run_and_verify_mergeinfo(
@@ -417,6 +417,32 @@
     adjust_error_for_server_version(''),
     ['3', '6'], A_path, A_COPY_path + '@PREV', '--show-revs', 'merged')
 
+  # A_COPY@BASE
+  svntest.actions.run_and_verify_mergeinfo(
+    adjust_error_for_server_version(''),
+    ['4'], A_path, A_COPY_path + '@BASE', '--show-revs', 'eligible')
+
+  # A_COPY@HEAD
+  svntest.actions.run_and_verify_mergeinfo(
+    adjust_error_for_server_version(''),
+    ['4'], A_path, A_COPY_path + '@HEAD', '--show-revs', 'eligible')
+
+  # A_COPY@4 (Prior to any merges)
+  svntest.actions.run_and_verify_mergeinfo(
+    adjust_error_for_server_version(''),
+    ['3', '4', '5', '6'], A_path, A_COPY_path + '@4', '--show-revs', 'eligible')
+
+  # A_COPY@COMMITTED (r8)
+  svntest.actions.run_and_verify_mergeinfo(
+    adjust_error_for_server_version(''),
+    ['4'], A_path, A_COPY_path + '@COMMITTED', '--show-revs',
+    'eligible')
+
+  # A_COPY@PREV (r7)
+  svntest.actions.run_and_verify_mergeinfo(
+    adjust_error_for_server_version(''),
+    ['4', '5'], A_path, A_COPY_path + '@PREV', '--show-revs', 'eligible')
+
 ########################################################################
 # Run the tests
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic