Re: Moving a repository with svn:externals using absolute paths (URLs)

2014-06-19 Thread Branko Čibej
On 19.06.2014 05:11, Geoff Field wrote:
>> From: Nico Kadel-Garcia
>> On Wed, Jun 18, 2014 at 9:35 PM, Geoff Field wrote:
>>
>>> In our duplication effort, we also set all the permissions 
>>> on the old repositories to read-only, to limit the chances
>>> of cross-contamination.
> Just to be clear, I'm not talking about the FILE permissions
> here, merely the SVN access permissions.  To be really clear,
> the original repositories are only being kept as a paranoia
> measure, just in case our customers (or legal representatives)
> require unsullied history at some indefinite time in the future.
>
>>> Regards,
>>>
>>> Geoff
>> This. So much this. When people want to keep, and keep 
>> cross-merging, the contents of multiple distinct live 
>> repositories while work is being replicated and cross-merged 
>> from all of them, it's usually time to look for a new job: 
> The vast majority of those repositories have been unused for
> some years, and our development team is (now) small enough so
> that I can guarantee there was no work proceeding on any of
> them.  Naturally, I also shut down SubVersion while it was in
> progress, just in case.
>
>> someone has been excited by the shiny tools and forgotten 
> Ooh, shiny ... What were we talking about? ;-)
>
>> "source control is a 24x7, it must *work* and work *every 
>> time*" resource.
> Quite right.  That's why our repositories are on a RAID system
> (now a SAN, actually) with regular backup (including off-site).

Finally some SANity! You'd be surprised at how many SVN admins forget
that it's probably *the* best option. :)

-- Brane

-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. br...@wandisco.com


Re: Unexpected behaviour when checking out a copy at an invalid revision

2014-06-19 Thread Fergus Slorach

Hi Stefan,

Thanks for the explanation - I always forget about the subtleties of using
-r versus @. I now understand what Subversion is doing here and why,
but I maintain that it should give some indication that the workspace is not
pointing at the "expected" repository location. Yes, it's the result of user
error (or may even be intentional), but an info or warning would be helpful.

All the best,

fergus



On 05/27/2014 02:46 AM, Stefan Sperling wrote:

On Sun, May 11, 2014 at 07:10:47PM +1200, Fergus Slorach wrote:


Checking out a copied directory at a revision prior to the copy results in
a checkout of the data before the copy. I would expect this to fail in the
same way that attempting to update to an invalid revision fails.
Is this the intended behaviour?


Hi Fergus,

Yes, it is. 'svn checkout -rX URL' is says: Please give me the content
of URL as it appeared in rX, following copy history if necessary.


If so, shouldn't there be some message that
your working copy is using a different location than requested?


Try: svn checkout URL@X
This says: Please locate URL in revision X and give me its content.
This will fail if URL doesn't actually exist in rX.
This matches the behaviour you expected from checkout -rX, doesn't it?

Subversion expects you to specify a peg revision if you want
something from a specific revision. See this page:
http://svnbook.red-bean.com/en/1.7/svn.advanced.pegrevs.html

Note that the command you gave has an implicit peg revision of HEAD
(HEAD being the youngest revision in the repository):
   svn co -r X URL@HEAD


svn copy trunk mybranch -m 'copy test'

Committed revision 2


svn co mybranch -r1 mybranch



svn info mybranch

Relative URL: ^trunk

Checking out the branch at a valid revision then attempting to update to the
earlier revision results in an error:

  svn: E160005: Target path 'mybranch' does not exist


You need to use 'svn switch' to change the URL of an existing working copy.
Again, this is by design. If working copies could be switched to different
URLs during 'update', users might end up making commits to the wrong branch
without realising it. (Admittedly, in your checkout -rX case, this could also
happen -- but we can wiggle ourselves out of the resulting conundrum by claiming
it is considered an error on behalf of the user because a peg revision should
have been used ;)

So what you tripped over is the small semantic difference between an operative
revision and a peg revision during 'svn checkout'. This is a common mistake,
but Subversion needs to support both cases, and users are required to learn
about this difference to make proper use of the system.

Does that make sense?