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.
---------------------------------------------------------------------
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 04:18:09 CEST