views:

2334

answers:

3

Hello,

I had a problem with committing changes after merging two branches of my project using TortoiseSVN.

Here are details:

I did a merge branch to trunk of project which I am working on.

Project includes main repository and libraries joint to main repository as svn external (libraries are also branched) as subdirectory of project.

When I was trying to commit changes TortoiseSVN said:

Commit A
re all the targets part of the same working copy? 
Unable to lock 'D:\websites\project\lib' 
Please execute the "Cleanup" command.

Of course Cleanup didn't help.

svn:external keyword for project directory was well defined, also lib folder still contained proper version of libraries (trunk version).

Both SVN server and client are in 1.5.x version (TortoiseSVN is 1.5.3.x).

From technical point of view both project and libraries are projects in the same SVN repository.

Any idea what went wrong?

I had been googling a bit for the solution, but didn't find anything useful, so I tried to commit my changes in two steps:

  1. commit changes from project folder
  2. commit changes from libraries folder

Which went without any problems.

But I am still wondering why I couldn't commit everything in one commit.

EDITS:

  • (After Ken G answer) Fixed version of TortoiseSVN 1.3.x -> 1.5.3.x.
+1  A: 

I think I remember reading about a bug relating to this in TortoiseSVN that's been fixed in the latest release. Check the latest release notes.

Josh Kodroff
+2  A: 

1.3 of TortoiseSVN is very old, the latest revision being 1.5.x. There have been numerous changes in both Subversion and TortoiseSVN since 1.3, so upgrading your client is probably your best bet.

Having said that, 1.5 TortoiseSVN is going to create/update Working Copies to a version 1.5 format. BE VERY CAREFUL when using TortoiseSVN (or any SVN client) against a previous Subversion's working copy.

Ken Gentle
+1  A: 

svn:external will cause Subversion to combine different repository paths on check-out, but ultimately those paths are still 'disjoint', so you have to do two commits to get the changes applied.

Here's the relevant quote from Version Control with Subversion

And Subversion still truly operates only on nondisjoint working copies. So, for example, if you want to commit changes that you've made in one or more of those external working copies, you must run svn commit explicitly on those working copies—committing on the primary working copy will not recurse into any external ones.

Ken Gentle
Ken -- this is the same repository -- I do the merge once a week and always it works -- I can commit everything in one commit.TortoiseSVN shows me in Commit window files both from project folder nd lib folder -- even lib folder itself (property svn:merge was changed).
Grzegorz Gierlik
JFTR, "different repository paths" reside in the same repository -- they're just different _paths_, right?So after upgrading to 1.5.3 of TortoiseSVN you see the same behavior? Same error message?
Ken Gentle
Yes. Still the same behaviour. According to http://svn.haxx.se/users/archive-2008-01/0814.shtml this is not a bug, but is feature :). So you are right. Probably eariler version of TortoiseSVN masked this behaviour.
Grzegorz Gierlik