RE: how to detect read-only branch from client?

2017-02-14 Thread Andrew Reedick
Not a complete solution, but it's a start.  Craft a "svn mkdir" that includes 
the url to test and a url that will always fail, e.g.
svn mkdir -m "" http://server/repo/dir2test/a  
http://server/repo/readonly/z

However, it looks like the urls are sorted and then processed in sort order 
(including for svnmucc.)  So you need your test url to come before your "will 
always fail" readonly url.  Getting the sorting figured out is left an exercise 
to the reader.  Maybe someone else knows of a way to ensure that the "always 
fail" readonly url gets checked last regardless of windows sorting, linux 
sorting, LC_ALL/LC_COLLATE settings, etc.


-Original Message-
From: Torsten Mueller [mailto:muelle...@runbox.com] 
Sent: Monday, February 13, 2017 11:51 AM
To: users@subversion.apache.org
Subject: how to detect read-only branch from client?

I write a script getting sources from one repository, doing a build and other 
time consuming things and then committing the results into another repsitory.

The problem is: the detination side is "managed" which means that I must expect 
read only branches there. They use the path based authentication feature (see 
VisualSVNServer) without any communication. They want to close a branch for 
commits, that's enough communication.

But in my case it would be very bad to start a process which runs for an hour 
or longer and then fails because it can't do the final commit.

How can I detect if a path in the destination directory is read only without 
modifying it?

My first guess was to use "svnmucc propdel" to delete a property which doesn't 
exist. This works great on a branch which is read only. But on the other side 
it creates always a revision on normal branches. That's not good. What can I do?

T.M.




Re: how to detect read-only branch from client?

2017-02-14 Thread Torsten Mueller
Andrew Reedick  schrieb:

> Not a complete solution, but it's a start. Craft a "svn mkdir" that
> includes the url to test and a url that will always fail

That's it. The key is to create a nested directory in a branch, this
means a directory which has a non-existing parent, and doing that
without the --parent parameter:

  Test/ro is a readonly branch
  Test/rw is a normal (read/write) branch

  trying to create directory "a/b":

  $ svn mkdir -m"xx" https://repository/svn/Binaries/Test/ro/a/b";
  svn: E175013: Access to '/svn/Binaries/!svn/txr/50-1u/Test/ro/a/b' forbidden

  $ svn mkdir -m"xx" https://repository/svn/Binaries/Test/rw/a/b";
  svn: E160013: Try 'svn mkdir --parents' instead?
  svn: E160013: File not found: transaction '50-1v', path '/Test/rw/a/b'

This gives two distiguishable messages: in the first case it fails
because of the readonly property, in the second case because of the
missing --parent parameter. No revision is made iin both cases - great.

Thanks a lot.

T.M.