[Subversion Wiki] Trivial Update of "ServerDictatedConfiguration" by pburba

2011-12-08 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "ServerDictatedConfiguration" page has been changed by pburba:
http://wiki.apache.org/subversion/ServerDictatedConfiguration?action=diff&rev1=13&rev2=14

  The high-level behavior for repository-dictated configuration is relatively 
simple: the repository maintains a list of configuration parameters and values, 
and upon request, provides these to the client who then applies them 
appropriately.
  
  There are a number of specific bits of configuration that existing Subversion 
users and administrators wish to have propagated from the server to the client. 
 There are also different scopes at which administrators might reasonably wish 
to apply differing defaults for these things:  server-wide, repository-wide, or 
local to a particular directory hierarchy within a specific repository.  The 
following is a listing of those that we know about, with some notes about scope 
and desired degrees of control:
- 
  ||'''Configuration''' ||'''Scope''' ||'''Enforceability''' ||'''Notes''' ||
  ||auto-props ||per-directory ||Enforceable via hook scripts ||Clients should 
be allowed to override this ||
  ||ignores ||per-directory ||Enforceable via hook scripts ||Client should be 
allowed to override this ||
@@ -17, +16 @@

  ||log message templates ||per-directory ||Enforceable via hook scripts 
||Doesn't fit the name=value configuration motif quite as readily as some of 
the others.  Would a client need to override this? ||
  ||myriad authn-related stuff ||per-server, per-repos ||Unenforceable ||Lack 
of enforceability plus relationship to security means that admins do not want 
the client to be able to trivially override this setting.  Precise requirements 
TBD (is this a boolean "allow/disallow plaintext password caching", or "require 
X, Y or Z encrypted password stores", or ...?) ||
  
+ 
+ 
+ 
  {{{#!wiki warning
  The configuration the server dictates can at best be only a suggestion to the 
client, with well-behaving clients honoring that suggestion.  As free software, 
though, most such clients could be modified by a malicious user to ignore 
server-side suggestions.  Server-side enforcement of desired behaviors (where 
possible, and often via hook scripts) is still recommended.
  }}}
- 
  At least one user specifically called out the need for the server to enforce 
adherence to the configured behaviors ''without'' requiring hook scripts to do 
so.  For example, if the repository has a configured auto-props list, the 
Subversion C code is perfectly capable of validating that incoming committed 
items obey those settings, failing the commit otherwise.  This seems like a 
reasonable request so long as we permit admins to specify which of their 
configuration settings are "suggested" versus "required" (again, taking into 
account that anything unenforceable can't truly be "required").
  
  Subversion should recognize multiple levels of possible hierarchy in the 
server-side configuration:
@@ -36, +37 @@

   1. enforced - The configuration value is required and adherence to it is 
verified by the server logic
  
  === Server-client transmission mechanism ===
- Over ra-neon/ra-serf, the client will send to the server the sha1 hash of the 
server-dictated config that it current has cached as part of the OPTIONS 
request.  If the server has a different version, it will send that to the 
client in the OPTIONS response.  For ra-svn, a similar thing happens as part of 
the initial connection handshake/feature exchange.  This is an opportunistic 
caching approach, keeping the client in sync with the repository configuration 
any time the client contacts the repository.  This mechanism requires that 
there exist a predictable and consistent manner in which to calculate the 
checksum of the configuration.
+ Over ra-neon/ra-serf, the client will send to the server the sha1 hash of the 
server-dictated config that it currently has cached as part of the OPTIONS 
request.  If the server has a different version, it will send that to the 
client in the OPTIONS response.  For ra-svn, a similar thing happens as part of 
the initial connection handshake/feature exchange.  This is an opportunistic 
caching approach, keeping the client in sync with the repository configuration 
any time the client contacts the repository.  This mechanism requires that 
there exist a predictable and consistent manner in which to calculate the 
checksum of the configuration.
  
  === Server-side storage ===
  ''[TODO]''


svn commit: r1212017 - /subversion/trunk/subversion/tests/cmdline/merge_tests.py

2011-12-08 Thread pburba
Author: pburba
Date: Thu Dec  8 18:16:37 2011
New Revision: 1212017

URL: http://svn.apache.org/viewvc?rev=1212017&view=rev
Log:
* subversion/tests/cmdline/merge_tests.py
  (unnecessary_noninheritable_mergeinfo_shallow_merge): Fix some 
   misspellings.

Modified:
subversion/trunk/subversion/tests/cmdline/merge_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=1212017&r1=1212016&r2=1212017&view=diff
==
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Thu Dec  8 
18:16:37 2011
@@ -17242,7 +17242,7 @@ def unnecessary_noninheritable_mergeinfo
 @Issue(4057)
 @SkipUnless(server_has_mergeinfo)
 def unnecessary_noninheritable_mergeinfo_shallow_merge(sbox):
-  "shallow merge reaches all neccessary subtrees"
+  "shallow merge reaches all necessary subtrees"
 
   B_branch_path = os.path.join(sbox.wc_dir, 'branch', 'B')
   E_path= os.path.join(sbox.wc_dir, 'A', 'B', 'E')
@@ -17266,7 +17266,7 @@ def unnecessary_noninheritable_mergeinfo
   #   /A/B:3* <-- Should be inheritable
   #   Properties on 'branch\B\lambda':
   # svn:mergeinfo
-  #   /A/B/lambda:3 <-- Not neccessary
+  #   /A/B/lambda:3 <-- Not necessary
   expected_skip = wc.State(B_branch_path, {})
   svntest.actions.run_and_verify_merge(B_branch_path, '2', '3',
sbox.repo_url + '/A/B', None,
@@ -17305,7 +17305,7 @@ def unnecessary_noninheritable_mergeinfo
   #   /A/B:4* <-- Should be inheritable
   #   Properties on 'branch\B\E':
   # svn:mergeinfo
-  #   /A/B/E:4 <-- Not neccessary 
+  #   /A/B/E:4 <-- Not necessary 
   expected_output = wc.State(B_branch_path, {
 'E' : Item(status=' U'),
 })




svn commit: r1212015 - /subversion/trunk/subversion/libsvn_client/merge.c

2011-12-08 Thread pburba
Author: pburba
Date: Thu Dec  8 18:12:55 2011
New Revision: 1212015

URL: http://svn.apache.org/viewvc?rev=1212015&view=rev
Log:
Adjust the issue #4057 fix made in r1211620 to account for svn_ra_get_log2's
limitations when using a BDB backend.

This fixes the currently failing tests with --fs-type=bdb:

  FAIL:  merge_tests.py 120: reverse merge adds subtree
  FAIL:  merge_tests.py 124: shallow merge reaches all necessary subtrees

* subversion/libsvn_client/merge.c

  (log_find_operative_subtree_baton_t): Add a svn_wc_context_t * member.

  (log_find_operative_subtree_revs): Account for the fact 
   that the svn_log_changed_path2_t.node_kind members in in 
   log_entry->changed_paths2 may be set to svn_node_unknown (e.g. with a BDB
   backend).

  (get_operative_immediate_children): Initialize new
   log_find_operative_subtree_baton_t member.


Modified:
subversion/trunk/subversion/libsvn_client/merge.c

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1212015&r1=1212014&r2=1212015&view=diff
==
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Thu Dec  8 18:12:55 2011
@@ -7197,6 +7197,7 @@ typedef struct log_find_operative_subtre
   const char *merge_source_fspath;
   const char *merge_target_abspath;
   svn_depth_t depth;
+  svn_wc_context_t *wc_ctx;
 
   /* A pool to allocate additions to the hashes in. */
   apr_pool_t *result_pool;
@@ -7245,10 +7246,39 @@ log_find_operative_subtree_revs(void *ba
   child = svn_relpath_dirname(rel_path, iterpool);
   if (child[0] == '\0')
 {
+  /* The svn_log_changed_path2_t.node_kind members in
+ LOG_ENTRY->CHANGED_PATHS2 may be set to
+ svn_node_unknown, see svn_log_changed_path2_t and
+ svn_fs_paths_changed2.  In that case we check the
+ type of the corresponding subtree in the merge
+ target. */
+  svn_node_kind_t node_kind;
+
+  if (change->node_kind == svn_node_unknown)
+{
+  const char *wc_child_abspath =
+svn_dirent_join(log_baton->merge_target_abspath,
+rel_path, iterpool);
+
+  /* ### ptb - svn_wc_read_kind is very tolerant when we ask
+ ### it about unversioned, non-existent, and missing WC
+ ### paths, simply setting *NODE_KIND svn_kind_none in
+ ### those cases.  Is there any legitimate error we
+ ### might enocunter during a merge where we'd want
+ ### to clear the error and continue? */
+  SVN_ERR(svn_wc_read_kind(&node_kind, log_baton->wc_ctx,
+   wc_child_abspath, FALSE,
+   iterpool));
+}
+  else
+{
+  node_kind = change->node_kind;
+}
+
   /* We only care about immediate directory children if
  DEPTH is svn_depth_files. */
   if (log_baton->depth == svn_depth_files
-  && change->node_kind == svn_node_file)
+  && node_kind != svn_node_dir)
 continue;
 
   /* If depth is svn_depth_immediates, then we only care
@@ -7338,6 +7368,7 @@ get_operative_immediate_children(apr_has
   log_baton.merge_source_fspath = merge_source_fspath;
   log_baton.merge_target_abspath = merge_target_abspath;
   log_baton.depth = depth;
+  log_baton.wc_ctx = wc_ctx;
   log_baton.result_pool = result_pool;
   log_targets = apr_array_make(scratch_pool, 1, sizeof(const char *));
   APR_ARRAY_PUSH(log_targets, const char *) = "";




svn commit: r1211998 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread steveking
Author: steveking
Date: Thu Dec  8 17:26:50 2011
New Revision: 1211998

URL: http://svn.apache.org/viewvc?rev=1211998&view=rev
Log:
* STATUS: Cast vote.

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211998&r1=1211997&r2=1211998&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 17:26:50 2011
@@ -109,7 +109,7 @@ Candidate changes:
Justification:
  It's a SEGV.
Votes:
- +1: philip, rhuijben
+ +1: philip, rhuijben, steveking
 
 Veto-blocked changes:
 =




svn commit: r1211975 - /subversion/trunk/subversion/tests/cmdline/merge_tests.py

2011-12-08 Thread pburba
Author: pburba
Date: Thu Dec  8 16:54:18 2011
New Revision: 1211975

URL: http://svn.apache.org/viewvc?rev=1211975&view=rev
Log:
* subversion/tests/cmdline/merge_tests.py
  (reverse_merge_adds_subtree): Remove a redundant update.


Modified:
subversion/trunk/subversion/tests/cmdline/merge_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=1211975&r1=1211974&r2=1211975&view=diff
==
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Thu Dec  8 
16:54:18 2011
@@ -16913,7 +16913,6 @@ def reverse_merge_adds_subtree(sbox):
   # ..\..\..\subversion\libsvn_subr\kitchensink.c:57: (apr_err=200022)
   # svn: E200022: Negative revision number found parsing '-7'
   svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
   expected_output = wc.State(A_COPY_path, {
 'D/H/chi' : Item(status='A '),
 })




svn propchange: r1211908 - svn:log

2011-12-08 Thread rhuijben
Author: rhuijben
Revision: 1211908
Modified property: svn:log

Modified: svn:log at Thu Dec  8 14:31:16 2011
--
--- svn:log (original)
+++ svn:log Thu Dec  8 14:31:16 2011
@@ -1 +1,3 @@
+[Accidentally reverts r1211904. Fixed in r1211909]
+
 * STATUS: Fix text.



Re: svn commit: r1211908 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread Hyrum K Wright
Did you mean to remove philip's votes?

-Hyrum

On Thu, Dec 8, 2011 at 8:26 AM,   wrote:
> Author: rhuijben
> Date: Thu Dec  8 14:26:56 2011
> New Revision: 1211908
>
> URL: http://svn.apache.org/viewvc?rev=1211908&view=rev
> Log:
> * STATUS: Fix text.
>
> Modified:
>    subversion/branches/1.7.x/STATUS
>
> Modified: subversion/branches/1.7.x/STATUS
> URL: 
> http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211908&r1=1211907&r2=1211908&view=diff
> ==
> --- subversion/branches/1.7.x/STATUS (original)
> +++ subversion/branches/1.7.x/STATUS Thu Dec  8 14:26:56 2011
> @@ -86,7 +86,7 @@ Candidate changes:
>    Justification:
>      Server asserts after being upgraded.
>    Votes:
> -     +1: danielsh, philip
> +     +1: danielsh
>
>  * r1210147
>    Fix the 'svn log --diff' code so that it correctly shows a diff of a
> @@ -100,9 +100,9 @@ Candidate changes:
>  * r1211483
>    Don't segfault on 'svn mkdir svn://localhost'
>    Justification:
> -     Though shall not segfault.
> +     Thou shall not segfault.
>    Votes:
> -     +1: rhuijben, philip
> +     +1: rhuijben
>
>  * r1211859, r1211885
>    Fix issue 4074, SEGV on "svn rm ROOT_URL"
>
>



-- 

uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/


svn commit: r1211909 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread rhuijben
Author: rhuijben
Date: Thu Dec  8 14:28:57 2011
New Revision: 1211909

URL: http://svn.apache.org/viewvc?rev=1211909&view=rev
Log:
* STATUS: Revert accidental vote changes from r1211908

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211909&r1=1211908&r2=1211909&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 14:28:57 2011
@@ -86,7 +86,7 @@ Candidate changes:
Justification:
  Server asserts after being upgraded.
Votes:
- +1: danielsh
+ +1: danielsh, philip
 
  * r1210147
Fix the 'svn log --diff' code so that it correctly shows a diff of a
@@ -102,7 +102,7 @@ Candidate changes:
Justification:
  Thou shall not segfault.
Votes:
- +1: rhuijben
+ +1: rhuijben, philip
 
  * r1211859, r1211885
Fix issue 4074, SEGV on "svn rm ROOT_URL"




svn commit: r1211908 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread rhuijben
Author: rhuijben
Date: Thu Dec  8 14:26:56 2011
New Revision: 1211908

URL: http://svn.apache.org/viewvc?rev=1211908&view=rev
Log:
* STATUS: Fix text.

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211908&r1=1211907&r2=1211908&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 14:26:56 2011
@@ -86,7 +86,7 @@ Candidate changes:
Justification:
  Server asserts after being upgraded.
Votes:
- +1: danielsh, philip
+ +1: danielsh
 
  * r1210147
Fix the 'svn log --diff' code so that it correctly shows a diff of a
@@ -100,9 +100,9 @@ Candidate changes:
  * r1211483
Don't segfault on 'svn mkdir svn://localhost'
Justification:
- Though shall not segfault.
+ Thou shall not segfault.
Votes:
- +1: rhuijben, philip
+ +1: rhuijben
 
  * r1211859, r1211885
Fix issue 4074, SEGV on "svn rm ROOT_URL"




svn commit: r1211904 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 14:22:59 2011
New Revision: 1211904

URL: http://svn.apache.org/viewvc?rev=1211904&view=rev
Log:
* STATUS: Vote.

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211904&r1=1211903&r2=1211904&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 14:22:59 2011
@@ -86,7 +86,7 @@ Candidate changes:
Justification:
  Server asserts after being upgraded.
Votes:
- +1: danielsh
+ +1: danielsh, philip
 
  * r1210147
Fix the 'svn log --diff' code so that it correctly shows a diff of a
@@ -102,7 +102,7 @@ Candidate changes:
Justification:
  Though shall not segfault.
Votes:
- +1: rhuijben
+ +1: rhuijben, philip
 
  * r1211859, r1211885
Fix issue 4074, SEGV on "svn rm ROOT_URL"




svn commit: r1211897 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread rhuijben
Author: rhuijben
Date: Thu Dec  8 14:10:11 2011
New Revision: 1211897

URL: http://svn.apache.org/viewvc?rev=1211897&view=rev
Log:
* STATUS: Cast vote.

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211897&r1=1211896&r2=1211897&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 14:10:11 2011
@@ -109,7 +109,7 @@ Candidate changes:
Justification:
  It's a SEGV.
Votes:
- +1: philip
+ +1: philip, rhuijben
 
 Veto-blocked changes:
 =




svn commit: r1211888 - /subversion/branches/1.7.x/STATUS

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 13:54:06 2011
New Revision: 1211888

URL: http://svn.apache.org/viewvc?rev=1211888&view=rev
Log:
* STATUS: Propose issue 4074.

Modified:
subversion/branches/1.7.x/STATUS

Modified: subversion/branches/1.7.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1211888&r1=1211887&r2=1211888&view=diff
==
--- subversion/branches/1.7.x/STATUS (original)
+++ subversion/branches/1.7.x/STATUS Thu Dec  8 13:54:06 2011
@@ -104,6 +104,13 @@ Candidate changes:
Votes:
  +1: rhuijben
 
+ * r1211859, r1211885
+   Fix issue 4074, SEGV on "svn rm ROOT_URL"
+   Justification:
+ It's a SEGV.
+   Votes:
+ +1: philip
+
 Veto-blocked changes:
 =
 




svn commit: r1211885 - in /subversion/trunk/subversion: libsvn_client/delete.c tests/cmdline/basic_tests.py

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 13:48:05 2011
New Revision: 1211885

URL: http://svn.apache.org/viewvc?rev=1211885&view=rev
Log:
Followup to r1211859.

* subversion/libsvn_client/delete.c
  (delete_urls_multi_repos): Tweak error message and error code.

* subversion/tests/cmdline/basic_tests.py
  (basic_delete): Adjust expected error.

Modified:
subversion/trunk/subversion/libsvn_client/delete.c
subversion/trunk/subversion/tests/cmdline/basic_tests.py

Modified: subversion/trunk/subversion/libsvn_client/delete.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/delete.c?rev=1211885&r1=1211884&r2=1211885&view=diff
==
--- subversion/trunk/subversion/libsvn_client/delete.c (original)
+++ subversion/trunk/subversion/libsvn_client/delete.c Thu Dec  8 13:48:05 2011
@@ -272,11 +272,11 @@ delete_urls_multi_repos(const apr_array_
   APR_ARRAY_PUSH(relpaths_list, const char *) = repos_relpath;
 }
 
-  /* Check we identified a non-root relpath.  Return an FS error
- similar to the one further down. */
+  /* Check we identified a non-root relpath.  Return an RA error
+ code for 1.6 compatibility. */
   if (!repos_relpath || !*repos_relpath)
-return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL,
- "URL '%s' not within a repository root", uri);
+return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL,
+ "URL '%s' not within a repository", uri);
 
   /* Now, test to see if the thing actually exists. */
   SVN_ERR(svn_ra_check_path(ra_session, repos_relpath, SVN_INVALID_REVNUM,

Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1211885&r1=1211884&r2=1211885&view=diff
==
--- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Thu Dec  8 
13:48:05 2011
@@ -1192,7 +1192,7 @@ def basic_delete(sbox):
  iota_URL)
 
   # Issue 4074, deleting a root url SEGV.
-  expected_error = 'svn: E160013: .*not within a repository root'
+  expected_error = 'svn: E17: .*not within a repository'
   svntest.actions.run_and_verify_svn(None, [], expected_error,
  'rm', sbox.repo_url,
  '--message', 'delete root')




svn commit: r1211859 - in /subversion/trunk/subversion: libsvn_client/delete.c tests/cmdline/basic_tests.py

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 12:47:13 2011
New Revision: 1211859

URL: http://svn.apache.org/viewvc?rev=1211859&view=rev
Log:
Fix issue 4074, "svn rm root_url" SEGV.

* subversion/libsvn_client/delete.c
  (delete_urls_multi_repos): Ensure we have a valid relpath.

* subversion/tests/cmdline/basic_tests.py
  (basic_delete): Extend with new test case.

Modified:
subversion/trunk/subversion/libsvn_client/delete.c
subversion/trunk/subversion/tests/cmdline/basic_tests.py

Modified: subversion/trunk/subversion/libsvn_client/delete.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/delete.c?rev=1211859&r1=1211858&r2=1211859&view=diff
==
--- subversion/trunk/subversion/libsvn_client/delete.c (original)
+++ subversion/trunk/subversion/libsvn_client/delete.c Thu Dec  8 12:47:13 2011
@@ -272,6 +272,12 @@ delete_urls_multi_repos(const apr_array_
   APR_ARRAY_PUSH(relpaths_list, const char *) = repos_relpath;
 }
 
+  /* Check we identified a non-root relpath.  Return an FS error
+ similar to the one further down. */
+  if (!repos_relpath || !*repos_relpath)
+return svn_error_createf(SVN_ERR_FS_NOT_FOUND, NULL,
+ "URL '%s' not within a repository root", uri);
+
   /* Now, test to see if the thing actually exists. */
   SVN_ERR(svn_ra_check_path(ra_session, repos_relpath, SVN_INVALID_REVNUM,
 &kind, pool));

Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1211859&r1=1211858&r2=1211859&view=diff
==
--- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Thu Dec  8 
12:47:13 2011
@@ -999,6 +999,7 @@ def verify_dir_deleted(path):
 
   return 1
 
+@Issue(687,4074)
 def basic_delete(sbox):
   "basic delete command"
 
@@ -1190,6 +1191,12 @@ def basic_delete(sbox):
  'rm', '-m', 'delete iota URL',
  iota_URL)
 
+  # Issue 4074, deleting a root url SEGV.
+  expected_error = 'svn: E160013: .*not within a repository root'
+  svntest.actions.run_and_verify_svn(None, [], expected_error,
+ 'rm', sbox.repo_url,
+ '--message', 'delete root')
+
 #--
 
 def basic_checkout_deleted(sbox):




svn commit: r1211813 - /subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 10:42:45 2011
New Revision: 1211813

URL: http://svn.apache.org/viewvc?rev=1211813&view=rev
Log:
* subversion/tests/libsvn_wc/op-depth-test.c
  (move_on_move): Tweak comment.
  (move_on_move2): New test, a variation on move_on_move.
  (test_funcs): Add new XFAIL test.

Modified:
subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

Modified: subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c?rev=1211813&r1=1211812&r2=1211813&view=diff
==
--- subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c Thu Dec  8 
10:42:45 2011
@@ -4323,7 +4323,67 @@ move_on_move(const svn_test_opts_t *opts
   {1, "B2",   "normal",   1, "A/B",   MOVED_HERE},
   {1, "B3",   "normal",   1, "X/B",   MOVED_HERE},
   {1, "A","normal",   1, "X"},
+  {1, "A/B",  "normal",   1, "X/B"}, /* moved_to=B3? */
+  {2, "A/B",  "base-deleted", NO_COPY_FROM},
+  {0}
+};
+SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+move_on_move2(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  svn_test__sandbox_t b;
+
+  SVN_ERR(svn_test__sandbox_create(&b, "move_on_move2", opts, pool));
+
+  SVN_ERR(wc_mkdir(&b, "A"));
+  SVN_ERR(wc_mkdir(&b, "A/B"));
+  SVN_ERR(wc_mkdir(&b, "X"));
+  SVN_ERR(wc_mkdir(&b, "X/B"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_update(&b, "", 1));
+
+  SVN_ERR(wc_move(&b, "A", "A2"));
+  SVN_ERR(wc_delete(&b, "A"));
+  SVN_ERR(wc_copy(&b, "X", "A"));
+
+  {
+nodes_row_t nodes[] = {
+  {0, "", "normal",   1, ""},
+  {0, "A","normal",   1, "A",   FALSE, "A2"},
+  {0, "A/B",  "normal",   1, "A/B"},
+  {0, "X","normal",   1, "X"},
+  {0, "X/B",  "normal",   1, "X/B"},
+  {1, "A2",   "normal",   1, "A",   MOVED_HERE},
+  {1, "A2/B", "normal",   1, "A/B", MOVED_HERE},
+  {1, "A","normal",   1, "X"},
   {1, "A/B",  "normal",   1, "X/B"},
+  {0}
+};
+SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  /* A/B is already moved to A2/B but there is no explicit moved_to,
+ we derive it from A.  The copy has given us another A/B that we
+ can move doing so stores explicit moved_to in A/B that breaks the
+ recording of the first move to A2/B. */
+  SVN_ERR(wc_move(&b, "A/B", "B3"));
+  {
+nodes_row_t nodes[] = {
+  {0, "", "normal",   1, ""},
+  {0, "A","normal",   1, "A",   FALSE, "A2"},
+  {0, "A/B",  "normal",   1, "A/B"},   /* XFAIL */
+  {0, "X","normal",   1, "X"},
+  {0, "X/B",  "normal",   1, "X/B"},
+  {1, "A2",   "normal",   1, "A",   MOVED_HERE},
+  {1, "A2/B", "normal",   1, "A/B", MOVED_HERE},
+  {1, "B3",   "normal",   1, "X/B", MOVED_HERE},
+  {1, "A","normal",   1, "X"},
+  {1, "A/B",  "normal",   1, "X/B"},   /* moved_to=B3? */
   {2, "A/B",  "base-deleted", NO_COPY_FROM},
   {0}
 };
@@ -4419,5 +4479,7 @@ struct svn_test_descriptor_t test_funcs[
"revert_nested_move"),
 SVN_TEST_OPTS_XFAIL(move_on_move,
"move_on_move"),
+SVN_TEST_OPTS_XFAIL(move_on_move2,
+   "move_on_move2"),
 SVN_TEST_NULL
   };




svn commit: r1211792 - /subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

2011-12-08 Thread philip
Author: philip
Date: Thu Dec  8 09:48:42 2011
New Revision: 1211792

URL: http://svn.apache.org/viewvc?rev=1211792&view=rev
Log:
* subversion/tests/libsvn_wc/op-depth-test.c
  (move_on_move): Simplify to avoid ambiguous XFAIL.

Modified:
subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c

Modified: subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c?rev=1211792&r1=1211791&r2=1211792&view=diff
==
--- subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/op-depth-test.c Thu Dec  8 
09:48:42 2011
@@ -4289,49 +4289,42 @@ move_on_move(const svn_test_opts_t *opts
   SVN_ERR(wc_commit(&b, ""));
   SVN_ERR(wc_update(&b, "", 1));
 
-  SVN_ERR(wc_move(&b, "A/B", "A/B2"));
-  SVN_ERR(wc_move(&b, "A", "A2"));
+  SVN_ERR(wc_move(&b, "A/B", "B2"));
+  SVN_ERR(wc_delete(&b, "A"));
   SVN_ERR(wc_copy(&b, "X", "A"));
 
   {
-/* Perhaps this should XFAIL on 1,A2/B,"normal" not being MOVED_HERE? */
 nodes_row_t nodes[] = {
   {0, "", "normal",   1, ""},
-  {0, "A","normal",   1, "A", FALSE, "A2"},
-  {0, "A/B",  "normal",   1, "A/B",   FALSE, "A2/B2"},
+  {0, "A","normal",   1, "A"},
+  {0, "A/B",  "normal",   1, "A/B", FALSE, "B2"},
   {0, "X","normal",   1, "X"},
   {0, "X/B",  "normal",   1, "X/B"},
+  {1, "B2",   "normal",   1, "A/B", MOVED_HERE},
   {1, "A","normal",   1, "X"},
   {1, "A/B",  "normal",   1, "X/B"},
-  {1, "A2",   "normal",   1, "A", MOVED_HERE},
-  {1, "A2/B", "normal",   1, "A/B"},
-  {2, "A2/B", "base-deleted", NO_COPY_FROM},
-  {2, "A2/B2","normal",   1, "A/B",   MOVED_HERE},
   {0}
 };
 SVN_ERR(check_db_rows(&b, "", nodes));
   }
 
-  /* A/B to A2/B2 is already recorded in A/B but the copy has given us
+  /* A/B to B2 is already recorded in A/B but the copy has given us
  another A/B that we can move.  A second move overwites the first
  move stored in A/B even though it's a different node being moved,
- and that breaks the recording of the move to A2/B2. */
-  SVN_ERR(wc_move(&b, "A/B", "A/B3"));
+ and that breaks the recording of the move to B2. */
+  SVN_ERR(wc_move(&b, "A/B", "B3"));
   {
 nodes_row_t nodes[] = {
   {0, "", "normal",   1, ""},
-  {0, "A","normal",   1, "A", FALSE, "A2"},
-  {0, "A/B",  "normal",   1, "A/B",   FALSE, "A2/B2"}, /* XFAIL */
+  {0, "A","normal",   1, "A"},
+  {0, "A/B",  "normal",   1, "A/B",   FALSE, "B2"}, /* XFAIL */
   {0, "X","normal",   1, "X"},
   {0, "X/B",  "normal",   1, "X/B"},
+  {1, "B2",   "normal",   1, "A/B",   MOVED_HERE},
+  {1, "B3",   "normal",   1, "X/B",   MOVED_HERE},
   {1, "A","normal",   1, "X"},
   {1, "A/B",  "normal",   1, "X/B"},
-  {1, "A2",   "normal",   1, "A", MOVED_HERE},
-  {1, "A2/B", "normal",   1, "A/B"},
-  {2, "A2/B", "base-deleted", NO_COPY_FROM},
-  {2, "A2/B2","normal",   1, "A/B",   MOVED_HERE},
   {2, "A/B",  "base-deleted", NO_COPY_FROM},
-  {2, "A/B3", "normal",   1, "X/B",   MOVED_HERE},
   {0}
 };
 SVN_ERR(check_db_rows(&b, "", nodes));