svn 1.8.0 problem "both sides of the move must be committed together"

4,975 views
Skip to first unread message

Gunnar Dalsnes

unread,
Jul 2, 2013, 9:11:27 AM7/2/13
to us...@subversion.apache.org
Hi,

When I try to commit I get:

svn: E200009: Commit failed (details follow):
svn: E200009: Cannot commit 'E:\svn\fishtalk trunk\src\VPA
Framework\VPAEntities
\Wrasse\BLEWrasseContainer.cs' because it was moved to 'E:\svn\fishtalk
trunk\sr
c\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs' which is
not par
t of the commit; both sides of the move must be committed together

This is strange, because I correctly moved the files with TSVN 1.8.0
using "SVN Move versioned item(s) here". Tried commiting from both TSVN
and from command line with svn.exe and same error.

When I check with svn status I get this:
<lots of other unrelated adds, mods and deletes>
A src\Plugins\Registration\IBLPWrasse\Entities
A + src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasseContainer.cs
D src\VPA Framework\VPAEntities\Wrasse\BLEWrasseContainer.cs
> moved to
src\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs

This seems to confirms that I moved the file correctly.

I tried recreating the problem by creating an empty repo, creating same
folder structure and moving, then modifying a file, but then it worked
without problem (typical).

Here are the 4 relevant entries (I think) from NODES in wc.db, if that
can help:
15751,"1","src/VPA
Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","0","src/VPA
Framework/VPAEntities/Wrasse","1","trunk/src/VPA
Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24486","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372322295733206",,,
62069,"1","src/VPA
Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","5","src/VPA
Framework/VPAEntities/Wrasse",,,,"base-deleted",,"src/Plugins/Registration/BLEntities/Wrasse/BLEWrasseContainer.cs","file",,,,,,,,,,,,
62075,"1","src/Plugins/Registration/IBLPWrasse/Entities","5","src/Plugins/Registration/IBLPWrasse",,,,"normal",,,"dir",,"infinity",,,,"0",,,,,,
62080,"1","src/Plugins/Registration/IBLPWrasse/Entities/BLEWrasseContainer.cs","6","src/Plugins/Registration/IBLPWrasse/Entities","1","trunk/src/VPA
Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24410","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372331062606714",,,

This repo was converted from SVN 1.7 format (not a fresh checkout), in
case this is relevant. This is on WinXP. SVN server is 1.7.3 (r1242825).

Update: I finally managed to commit by only selecting the deleted source
file, added destination file and added destination folder (ignoring all
other changed):

Command: Commit
Adding: E:\svn\Copy of fishtalk
trunk\src\Plugins\Registration\IBLPWrasse\Entities
Adding: E:\svn\Copy of fishtalk
trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
Deleting: E:\svn\Copy of fishtalk trunk\src\VPA
Framework\VPAEntities\Wrasse\BLEWrasse.cs
Sending content: E:\svn\Copy of fishtalk
trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
Completed: At revision: 24489

Still, very annoying. This can't be right.

regards,
Gunnar Dalsnes

Stefan Sperling

unread,
Jul 2, 2013, 9:33:40 AM7/2/13
to Gunnar Dalsnes, us...@subversion.apache.org
On Tue, Jul 02, 2013 at 03:11:27PM +0200, Gunnar Dalsnes wrote:
> Hi,
>
> When I try to commit I get:
>
> svn: E200009: Commit failed (details follow):
> svn: E200009: Cannot commit 'E:\svn\fishtalk trunk\src\VPA
> Framework\VPAEntities
> \Wrasse\BLEWrasseContainer.cs' because it was moved to
> 'E:\svn\fishtalk trunk\sr
> c\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs'
> which is not par
> t of the commit; both sides of the move must be committed together
>
> This is strange, because I correctly moved the files with TSVN 1.8.0
> using "SVN Move versioned item(s) here". Tried commiting from both
> TSVN and from command line with svn.exe and same error.
>
> When I check with svn status I get this:
> <lots of other unrelated adds, mods and deletes>
> A src\Plugins\Registration\IBLPWrasse\Entities
> A + src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasseContainer.cs
> D src\VPA Framework\VPAEntities\Wrasse\BLEWrasseContainer.cs
> > moved to
> src\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs
>
> This seems to confirms that I moved the file correctly.

Strange. The status output only shows one side of the move.
Where does it show a 'moved from'? Did you accidentally omit
the '> moved from' line from the output you pasted?

> Update: I finally managed to commit by only selecting the deleted
> source file, added destination file and added destination folder
> (ignoring all other changed):
>
> Command: Commit
> Adding: E:\svn\Copy of fishtalk
> trunk\src\Plugins\Registration\IBLPWrasse\Entities
> Adding: E:\svn\Copy of fishtalk
> trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
> Deleting: E:\svn\Copy of fishtalk trunk\src\VPA
> Framework\VPAEntities\Wrasse\BLEWrasse.cs
> Sending content: E:\svn\Copy of fishtalk
> trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
> Completed: At revision: 24489
>
> Still, very annoying. This can't be right.

It looks like you moved a file BLEWrasse.cs into a locally added folder
called Entities. To commit the move destination you also need to commit
the new folder that contains the move destination. I don't really
understand what you think is wrong that. Am I missing something?

Philip Martin

unread,
Jul 2, 2013, 9:59:01 AM7/2/13
to Gunnar Dalsnes, us...@subversion.apache.org
Gunnar Dalsnes <har...@online.no> writes:

> When I check with svn status I get this:
> <lots of other unrelated adds, mods and deletes>
> A src\Plugins\Registration\IBLPWrasse\Entities
> A + src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasseContainer.cs
> D src\VPA Framework\VPAEntities\Wrasse\BLEWrasseContainer.cs
> > moved to src\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs
>
> This seems to confirms that I moved the file correctly.

No, that's not correct. There should be a "moved from" line on the
destination to match the "moved to" line on the source.

> I tried recreating the problem by creating an empty repo, creating same folder structure and moving, then modifying a file, but then it worked without problem (typical).

That would have both moved-to and moved-here.

> Here are the 4 relevant entries (I think) from NODES in wc.db, if that can help:
> 15751,"1","src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","0","src/VPA Framework/VPAEntities/Wrasse","1","trunk/src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24486","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372322295733206",,,
> 62069,"1","src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","5","src/VPA Framework/VPAEntities/Wrasse",,,,"base-deleted",,"src/Plugins/Registration/BLEntities/Wrasse/BLEWrasseContainer.cs","file",,,,,,,,,,,,
> 62075,"1","src/Plugins/Registration/IBLPWrasse/Entities","5","src/Plugins/Registration/IBLPWrasse",,,,"normal",,,"dir",,"infinity",,,,"0",,,,,,
> 62080,"1","src/Plugins/Registration/IBLPWrasse/Entities/BLEWrasseContainer.cs","6","src/Plugins/Registration/IBLPWrasse/Entities","1","trunk/src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24410","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372331062606714",,,

So NODES.moved_here is null in the row for the move destination. What
did you do to get that to happen?

> This repo was converted from SVN 1.7 format (not a fresh checkout), in case this is relevant. This is on WinXP. SVN server is 1.7.3 (r1242825).
>
> Update: I finally managed to commit by only selecting the deleted source file, added destination file and added destination folder (ignoring all other changed):
>
> Command: Commit
> Adding: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities
> Adding: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
> Deleting: E:\svn\Copy of fishtalk trunk\src\VPA Framework\VPAEntities\Wrasse\BLEWrasse.cs
> Sending content: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
> Completed: At revision: 24489
>
> Still, very annoying. This can't be right.

The closest I can get to reproducing is by manually changing wc.db:

svnadmin create repo
svn -mm import repo/format file://`pwd`/repo/A/f
svn co file://`pwd`/repo wc
svn mkdir wc/B
svn mv wc/A/f wc/B/f
sqlite3 wc/.svn/wc.db "update nodes set moved_here = null"

but even then the commit works. Which targets were you committing? The
whole working copy or individual files?

--
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com

Gunnar Dalsnes

unread,
Jul 2, 2013, 10:05:36 AM7/2/13
to us...@subversion.apache.org
There is no > moved from line showing for BLEWrasseContainer.cs in svn
status.

>
>> Update: I finally managed to commit by only selecting the deleted
>> source file, added destination file and added destination folder
>> (ignoring all other changed):
>>
>> Command: Commit
>> Adding: E:\svn\Copy of fishtalk
>> trunk\src\Plugins\Registration\IBLPWrasse\Entities
>> Adding: E:\svn\Copy of fishtalk
>> trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
>> Deleting: E:\svn\Copy of fishtalk trunk\src\VPA
>> Framework\VPAEntities\Wrasse\BLEWrasse.cs
>> Sending content: E:\svn\Copy of fishtalk
>> trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
>> Completed: At revision: 24489
>>
>> Still, very annoying. This can't be right.
>
> It looks like you moved a file BLEWrasse.cs into a locally added folder
> called Entities. To commit the move destination you also need to commit
> the new folder that contains the move destination. I don't really
> understand what you think is wrong that. Am I missing something?

Sorry, I was confused, this is a different and unrelated file. This file
actually has a > moved from entry, that's why it worked.

>
>
>

Gunnar Dalsnes

unread,
Jul 2, 2013, 10:48:28 AM7/2/13
to us...@subversion.apache.org
On 02.07.2013 15:59, Philip Martin wrote:
> Gunnar Dalsnes <har...@online.no> writes:
>
>> When I check with svn status I get this:
>> <lots of other unrelated adds, mods and deletes>
>> A src\Plugins\Registration\IBLPWrasse\Entities
>> A + src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasseContainer.cs
>> D src\VPA Framework\VPAEntities\Wrasse\BLEWrasseContainer.cs
>> > moved to src\Plugins\Registration\BLEntities\Wrasse\BLEWrasseContainer.cs
>>
>> This seems to confirms that I moved the file correctly.
>
> No, that's not correct. There should be a "moved from" line on the
> destination to match the "moved to" line on the source.

Yes, that line is missing from svn status.
>
>> I tried recreating the problem by creating an empty repo, creating same folder structure and moving, then modifying a file, but then it worked without problem (typical).
>
> That would have both moved-to and moved-here.
>
>> Here are the 4 relevant entries (I think) from NODES in wc.db, if that can help:
>> 15751,"1","src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","0","src/VPA Framework/VPAEntities/Wrasse","1","trunk/src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24486","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372322295733206",,,
>> 62069,"1","src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","5","src/VPA Framework/VPAEntities/Wrasse",,,,"base-deleted",,"src/Plugins/Registration/BLEntities/Wrasse/BLEWrasseContainer.cs","file",,,,,,,,,,,,
>> 62075,"1","src/Plugins/Registration/IBLPWrasse/Entities","5","src/Plugins/Registration/IBLPWrasse",,,,"normal",,,"dir",,"infinity",,,,"0",,,,,,
>> 62080,"1","src/Plugins/Registration/IBLPWrasse/Entities/BLEWrasseContainer.cs","6","src/Plugins/Registration/IBLPWrasse/Entities","1","trunk/src/VPA Framework/VPAEntities/Wrasse/BLEWrasseContainer.cs","24410","normal",,,"file",,"infinity","$sha1$544d1e17178a9ee815a60b74995fc72aa4a5e526",,"533","1214814539781408","username","2362","1372331062606714",,,
>
> So NODES.moved_here is null in the row for the move destination. What
> did you do to get that to happen?

Nothing special. I moved the files with TSVN 1.8.0 using Windows
Explorer and TSVN context menus. Then I included the file in the
destination solution. I'm using VisualSVN 3.5.0 btw. But even if TSVN or
VSVN is ill behaving, they must go via svn library so I would expect
they are not be able to corrupt wc.db, even if they wanted.

>
>> This repo was converted from SVN 1.7 format (not a fresh checkout), in case this is relevant. This is on WinXP. SVN server is 1.7.3 (r1242825).
>>
>> Update: I finally managed to commit by only selecting the deleted source file, added destination file and added destination folder (ignoring all other changed):
>>
>> Command: Commit
>> Adding: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities
>> Adding: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
>> Deleting: E:\svn\Copy of fishtalk trunk\src\VPA Framework\VPAEntities\Wrasse\BLEWrasse.cs
>> Sending content: E:\svn\Copy of fishtalk trunk\src\Plugins\Registration\IBLPWrasse\Entities\BLEWrasse.cs
>> Completed: At revision: 24489
>>
>> Still, very annoying. This can't be right.
>
> The closest I can get to reproducing is by manually changing wc.db:
>
> svnadmin create repo
> svn -mm import repo/format file://`pwd`/repo/A/f
> svn co file://`pwd`/repo wc
> svn mkdir wc/B
> svn mv wc/A/f wc/B/f
> sqlite3 wc/.svn/wc.db "update nodes set moved_here = null"
>
> but even then the commit works. Which targets were you committing? The
> whole working copy or individual files?

I tried committing whole wc (mix of adds, edits and moves). I eventually
got everything committed by splitting in 6 different commits, mostly by
trial and error, but generally it was mods first, then adds, then deletes.

I will and see if I can reproduce the error, but it may be difficult if
either TSVN or VSVNis involved.

>

Dipen Lama

unread,
Feb 15, 2014, 11:11:50 AM2/15/14
to subversi...@googlegroups.com, us...@subversion.apache.org, har...@online.no
Commit parent folder inside which you moved files by drag and drop. This solve the problem in SVN by performing commit  at both  sides of the move the same time, thus solution to the problem.
For more info
http://rndp-android.blogspot.com/2014/02/svn-180-problem-both-sides-of-move-must.html
Reply all
Reply to author
Forward
0 new messages