[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Difference between svn and tsvn when committing svn:externals

From: Simon Large <simon.tortoisesvn_at_googlemail.com>
Date: Tue, 14 Oct 2008 09:04:12 +0100

2008/10/14 Andy Levy <andy.levy_at_gmail.com>:
> On Mon, Oct 13, 2008 at 22:13, si <sshnug.si_at_gmail.com> wrote:
>> Greetings,
>>
>> Just stumbled across a difference between svn and tsvn when committing
>> svn:externals. Tested using svn 1.5.2 and tsvn 1.5.3.
>>
>> Due to source code growth we've been restructuring our repository so
>> it looks like:
>>
>> /trunk/project1
>> /trunk/project2
>> /trunk/framework
>> /trunk/tools
>>
>> Each project uses svn:externals to reference the relevant tools it
>> needs, for example svn:externals on /trunk/project1/tools could look
>> like:
>>
>> ^/trunk/tools/framework framework
>> ^/trunk/tools/log4net log4net
>> ^/trunk/tools/nunit nunit
>>
>> So all this is working great, each project only pulls down the
>> appropriate tool (and if necessary revision) it needs, but we can
>> still keep a common location for all our tools.
>>
>> The problem is that when our build server releases a new copy of our
>> framework, we copy the output into the svn:externals directory, and
>> when I try to commit using svn no files are committed, but if I commit
>> using tsvn it works! I'm trying both at the same location - at the
>> root of the project directory working copy.
>>
>> The workflow is:
>>
>> /trunk/framework/bin/Release/framework.dll is copied to
>> /trunk/framework/tools/framework which is an svn:externals referencing
>> ^/trunk/tools/framework
>>
>> If I execute svn stat from /trunk/framework working copy, it shows the
>> svn:external directory as having the modified framework.dll; but it
>> won't commit the changes. I have tried svn ci --depth=infinity, but
>> that doesn't change the outcome. The only way I can get svn command
>> line to commit is if I cd into /framework/tools/framework and an svn
>> commit from there works. So this is different from the way tsvn
>> handles it.
>>
>> My feeling is that tsvn is doing the correct thing, and this is a bug
>> in svn - if my working copy references an svn:externals which is
>> modified, then a commit on that working copy should commit the
>> svn:externals. I would like svn and tsvn to be consistent, they should
>> both behave in the same way, but currently they're inconsistent.
>
> That depends upon your definition of "correct". The svn ci
> documentation states "Send changes from your working copy to the
> repository." and directories which are created by svn:externals are a
> separate WC from the parent.
>
> I think TSVN commits the externals as a separate commit from the
> parent directory (which it must, because the external is a different
> WC), but does it all in one shot for you. The command line client only
> commits a single WC. You could script it to do what TSVN is doing
> though.

TSVN commits the externals in the same commit if they are in the same
repository, and not at all if they are in a different repository. But
it does show a warning if there are changes in the externals which
will not be committed.

Simon

-- 
:       ___
:  oo  // \\      "De Chelonian Mobile"
: (_,\/ \_/ \     TortoiseSVN
:   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
:   /_/   \_\     http://tortoisesvn.net
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_tortoisesvn.tigris.org
For additional commands, e-mail: users-help_at_tortoisesvn.tigris.org
Received on 2008-10-14 10:04:38 CEST

This is an archived mail posted to the TortoiseSVN Users mailing list.