FW: Possible bug moving file and then deleting directory
You're right, I apologize. I tried again and the directory is still marked as out of date but a tree conflict does not occur after updating. I must have ran the update in my head... Thanks for taking the time to confirm this! From: Bert Huijben [mailto:b...@qqmail.nl] Sent: Thursday, June 23, 2011 10:32 AM To: Patrick Quirk; 'Johan Corveleyn'; 'Mark Phippard' Cc: users@subversion.apache.org Subject: RE: Possible bug moving file and then deleting directory Patrick, I can't reproduce the tree conflict in either of those cases using the combination of a trunk client and repository. (I can reproduce it with 1.6) Can you please verify if you really used the right binaries for your test? I can reproduce it up to the out of date error: svn.exe ci -m "" svn-test-work\working_copies\tree_conflict_tests-24 Deleting svn-test-work\working_copies\tree_conflict_tests-24\A\B svn: E155011: Commit failed (details follow): svn: E155011: Directory 'R:\Svn-2010\tests\subversion\tests\cmdline\svn-test-work\working_copies\tree_conflict_tests-24\A\B' is out of date svn: E160028: Directory '/A/B' is out of date But an update after that doesn't raise a tree conflict for me. The test script I wrote is: def update_dir_with_not_present(sbox): "lock status update shouldn't flag tree conflict" sbox.build() wc_dir = sbox.wc_dir newtxt = sbox.ospath('A/B/new.txt') main.file_write(newtxt, 'new.txt') sbox.simple_add('A/B/new.txt') sbox.simple_commit() sbox.simple_move('A/B/new.txt', 'A/C/newer.txt') sbox.simple_commit() sbox.simple_rm('A/B') # We can't commit this without updating (ra_svn produces its own error) run_and_verify_svn(None, None, "svn: E(155011|160028): Dir.*B.*out of date", 'ci', '-m', '', wc_dir) # So we run update run_and_verify_svn(None, None, [], 'up', wc_dir) # And now we can commit run_and_verify_svn(None, None, [], 'ci', '-m', '', wc_dir) (It is actually part of http://svn.apache.org/repos/asf/subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py now) Bert From: Patrick Quirk [mailto:p.qu...@smt.com] Sent: donderdag 23 juni 2011 15:08 To: Johan Corveleyn; Mark Phippard Cc: users@subversion.apache.org Subject: RE: Possible bug moving file and then deleting directory Using the Collabnet binaries rolled from r1136035 I see the same behavior using the script from my original email. It does sound pretty similar to 3526, though my repro script is a bit different. However I created a script to reproduce issue 3526 and that also fails for me. To summarize, both of these sets of steps have the same outcome: Issue 3526: 1.) Add a file in a directory, commit 2.) Delete that directory, commit fails saying the directory is not up to date 3.) Update -> tree conflict My initial email: 1.) Add a file in a directory, commit 2.) Move that file to another directory, commit 3.) Delete the first directory, commit fails saying the directory is not up to date 4.) Update -> tree conflict Regarding Mark's pointer to the FAQ, I realize the tree conflicts are expected behavior in a sense, but I feel like the steps before that should work regardless. Especially since I'm committing at a level above the directory in question that does have operations done on it to advance the current revision number. I doubt anyone would know that an update is required in the middle of these steps. I've attached the script I used to reproduce 3526, maybe someone could review it and make sure I'm matching what the issue is describing, and confirm that it does/doesn't work for them either? It's a windows batch file (zipped and renamed). From: Johan Corveleyn [mailto:jcor...@gmail.com] Sent: Wednesday, June 22, 2011 7:03 PM To: Mark Phippard Cc: Patrick Quirk; users@subversion.apache.org Subject: Re: Possible bug moving file and then deleting directory It seems this behavior has changed in 1.7 (to be released soon). It will no longer flag this as a tree conflict. See http://subversion.tigris.org/issues/show_bug.cgi?id=3526. AFAICS, the case described here is similar to the one described in issue #3526. Patrick, if you have some time, maybe you can test this with one of the pre-releases of 1.7? See http://subversion.apache.org/packages.html#pre-release. Cheers, -- Johan On Wed, Jun 22, 2011 at 10:44 PM, Mark Phippard wrote: See http://subversion.apache.org/faq.html#self-tree-conflict On Wed, Jun 22, 2011 at 4:04 PM, Patrick Quirk wrote: I've run into this issue the past few days and I don't feel like this is expec
Assertion Failed: workqueue.c
I upgraded to 1.7 yesterday when the new version of Tortoise came out, and used it with no issues last evening and today until I encountered this assertion: In file 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\workqueue.c' line 672: assertion failed (checksum != NULL) Now any time I attempt anything (cleanup, update, commit, etc) in that WC I always get this assertion (using Tortoise or the command line). I got it first while running an update on my working copy after resolving a conflict (resolved using 'theirs'). This issues seems similar to this thread: http://svn.haxx.se/dev/archive-2011-09/0079.shtml ...but there didn't seem to be a resolution there. Here's the action log from Tortoise; hopefully that can provide some more details. The first update was done on C:\Dev\GEM\Dom\Domains\Football and it finished after resolving the conflict. The second update was done on C:\Dev, and it asserted, as you can see. 10/12/2011 - 2:25:49 PM Command : Commit Modified : C:\Dev\GEM\Dom\Domains\Football\GEMDomainFootball.csproj Error: Commit failed (details follow): Error: File or directory 'GEMDomainFootball.csproj' is out of date; try updating Error: resource out of date; try updating Completed! : 10/12/2011 - 2:26:02 PM Command : Update Updating : C:\Dev\GEM\Dom\Domains\Football Conflicted : C:\Dev\GEM\Dom\Domains\Football\GEMDomainFootball.csproj Updated : C:\Dev\GEM\Dom\Domains\Football\Top\Classes\FootballUtil.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Top\Classes\FootballPktProc.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\GSIS\Boxes\gbGSISFootballFeedHandler.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\GSIS\Controls\ctlNFLView.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\GSIS\Classes\GSISPktProc.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\STATS\Boxes\gbSTATSFootballFeedHandler.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\STATS\Boxes\gbSTATSFootballHandler.cs Updated : C:\Dev\GEM\Dom\Domains\Football\Models\STATS\Classes\STATSPktProc.cs Completed: At revision: 18993 Warning! : One or more files are in a conflicted state. 10/12/2011 - 2:28:49 PM Command : Update Updating : C:\Dev Updated : C:\Dev\GEM\Dom\Domains\Hockey\Models\HockeyData\Boxes\gbHockeyUtopiaFeedHandler.cs Updated : C:\Dev\GEM\Dom\Domains\Hockey\Models\HockeyData\Classes\HockeyTeam.cs Updated : C:\Dev\GEM\Dom\Domains\Racing\Models\RacingUser\Boxes\gbPitClockPosition.cs Updated : C:\Dev\GEM\Dom\Domains\Racing\Models\RacingUser\Classes\fdRacingPitClocksMovable.cs Updated : C:\Dev\GEM\Blocks\GEMRenderGL\GEMRenderGL.csproj Added: C:\Dev\GEM\Blocks\GEMRenderGL\Classes\gemGLRenderingContext.cs Updated : C:\Dev\GEM\Blocks\GEMRender\GEMRender.csproj Added: C:\Dev\GEM\Blocks\GEMRender\Classes\gemRenderingContext.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Controls\ctlProjectExplorer.Designer.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Controls\ctlProjectExplorer.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\CopyBehavior\CopyDirectoryBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\CopyBehavior\CopyImageSequenceBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\CopyBehavior\CopyBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\CopyBehavior\CopyFileBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\CopyBehavior\CopyNoneBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\ProjectExplorer.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\ProjectExplorerNode.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\ChildrenBehavior\LoadHotFilesBehavior.cs Updated : C:\Dev\GEM\Apps\GEMStudio\Classes\ProjectExplorerTool\Util\CutCopyPasteHandler.cs Updated : C:\Dev\Racing\VS.IRL\VS.IRL.csproj Added: C:\Dev\Racing\VS.IRL\Classes\fdRacingPitClocksMovableIRL.cs Updated : C:\Dev\Studio\SMT.DMX\Controls\ctlBoxScore.resx Updated : C:\Dev\Studio\SMT.DMX\Controls\ctlBoxScore.Designer.cs Updated : C:\Dev\Studio\SMT.DMX\Controls\ctlBoxScore.cs Added: C:\Dev\Studio\VS.ALL\Classes\fdStudioGameGridVS.cs Updated : C:\Dev\Studio\VS.ALL\Classes\iscStudioWallPilotVS.cs Added: C:\Dev\X\MONSTER.FMX Added: C:\Dev\X\MO
RE: Assertion Failed: workqueue.c
> Is this a working copy that you checked-out with the old 1.6 Tortoise > and upgraded to 1.7, or is it a working copy that you checked-out with > 1.7? This is a 1.6.17 working copy that was upgraded. > A text-conflict or a tree-conflict? Do you have any local modifications > to the working copy? Adds, deletes, copies etc.? Text-conflict to a single file. I had local modifications but resolved the conflict by using the repository's version of the file (the update was a superset of my changes). > Is the sqlite3 utility readily available on Windows? If it is then run: > sqlite3 .svn/wc.db "select * from work_queue" Yep, here's the output: 79|(file-install X/MONSTER.FMX/MONSTER.FMX.csproj 1 0 1 1) 80|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.resx 1 0 1 1) 81|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs 1 0 1 1) 82|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.cs 1 0 1 1) These are files that were new from the repo and were the last to show up before the assertion appeared.
RE: Assertion Failed: workqueue.c
>>> Is the sqlite3 utility readily available on Windows? If it is then run: >>> sqlite3 .svn/wc.db "select * from work_queue" >> >> Yep, here's the output: >> 79|(file-install X/MONSTER.FMX/MONSTER.FMX.csproj 1 0 1 1) >> 80|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.resx 1 0 1 1) >> 81|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs 1 0 1 1) >> 82|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.cs 1 0 1 1) >> >> These are files that were new from the repo and were the last to show up >> before the assertion appeared. > > So now we want to see the nodes row for each of those four paths: > > sqlite3 .svn/wc.db "select * from nodes where > local_relpath='X/MONSTER.FMX/MONSTER.FMX.csproj'" > sqlite3 .svn/wc.db "select * from nodes where > local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.resx'" > sqlite3 .svn/wc.db "select * from nodes where > local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs'" > sqlite3 .svn/wc.db "select * from nodes where > local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.cs'" I've attached the output since it's a little unreadable in 80 column format. ÿþ1 | X / M O N S T E R . F M X / M O N S T E R . F M X . c s p r o j | 0 | X / M O N S T E R . F M X | 1 | H o u s e / D e v / X / M O N S T E R . F M X / M O N S T E R . F M X . c s p r o j | 1 8 9 9 3 | n o r m a l | | | f i l e | ( ) | | $ s h a 1 $ a 6 f b 3 1 c b e a 1 8 a 2 f 6 7 0 e 5 d 1 3 8 7 b 2 a 1 b 1 1 8 f 8 3 1 f 0 9 | | 1 8 9 8 7 | 1 3 1 8 4 4 1 4 4 0 3 5 6 5 3 2 | b t r | | | ( s v n : w c : r a _ d a v : v e r s i o n - u r l 6 6 / s v n - d e v / ! s v n / v e r / 1 8 9 8 7 / H o u s e / D e v / X / M O N S T E R . F M X / M O N S T E R . F M X . c s p r o j ) | 1 | X / M O N S T E R . F M X / M O N S T E R . F M X . c s p r o j | 1 | X / M O N S T E R . F M X | | | | b a s e - d e l e t e d | | | f i l e | | | | | | | | | | | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . r e s x | 0 | X / M O N S T E R . F M X / B o x e s | 1 | H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . r e s x | 1 8 9 9 3 | n o r m a l | | | f i l e | ( ) | | $ s h a 1 $ 9 a d d d 6 5 1 c d 4 2 6 0 e e 5 2 b 2 6 c f 5 e a e 2 d 2 b f e 7 9 8 a b a 5 | | 1 8 9 8 7 | 1 3 1 8 4 4 1 4 4 0 3 5 6 5 3 2 | b t r | | | ( s v n : w c : r a _ d a v : v e r s i o n - u r l 7 1 / s v n - d e v / ! s v n / v e r / 1 8 9 8 7 / H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . r e s x ) | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . r e s x | 1 | X / M O N S T E R . F M X / B o x e s | | | | b a s e - d e l e t e d | | | f i l e | | | | | | | | | | | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . D e s i g n e r . c s | 0 | X / M O N S T E R . F M X / B o x e s | 1 | H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . D e s i g n e r . c s | 1 8 9 9 3 | n o r m a l | | | f i l e | ( ) | | $ s h a 1 $ e a 6 8 7 1 c 7 f 5 7 d d 6 3 e 0 a 7 4 a c 0 f d 1 9 4 3 5 2 3 2 3 2 2 e 5 f f | | 1 8 9 8 7 | 1 3 1 8 4 4 1 4 4 0 3 5 6 5 3 2 | b t r | | | ( s v n : w c : r a _ d a v : v e r s i o n - u r l 7 8 / s v n - d e v / ! s v n / v e r / 1 8 9 8 7 / H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . D e s i g n e r . c s ) | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . D e s i g n e r . c s | 1 | X / M O N S T E R . F M X / B o x e s | | | | b a s e - d e l e t e d | | | f i l e | | | | | | | | | | | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . c s | 0 | X / M O N S T E R . F M X / B o x e s | 1 | H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . c s | 1 8 9 9 3 | n o r m a l | | | f i l e | ( ) | | $ s h a 1 $ 0 4 1 f f e 7 0 4 1 5 c e 2 9 0 a 4 f 1 4 a 7 7 0 d 8 6 9 e 2 e b 3 b 4 2 0 e 8 | | 1 8 9 8 7 | 1 3 1 8 4 4 1 4 4 0 3 5 6 5 3 2 | b t r | | | ( s v n : w c : r a _ d a v : v e r s i o n - u r l 6 9 / s v n - d e v / ! s v n / v e r / 1 8 9 8 7 / H o u s e / D e v / X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . c s ) | 1 | X / M O N S T E R . F M X / B o x e s / g b F M X D i s p l a y . c s | 1 | X / M O N S T E R . F M X / B o x e s | | | | b a s e - d e l e t e d | | | f i l e | | | | | | | | | | |
RE: Assertion Failed: workqueue.c
>>> So now we want to see the nodes row for each of those four paths: >>> >>> sqlite3 .svn/wc.db "select * from nodes where >>> local_relpath='X/MONSTER.FMX/MONSTER.FMX.csproj'" >>> sqlite3 .svn/wc.db "select * from nodes where >>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.resx'" >>> sqlite3 .svn/wc.db "select * from nodes where >>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs'" >>> sqlite3 .svn/wc.db "select * from nodes where >>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.cs'" >> >> I've attached the output since it's a little unreadable in 80 column format. > > Thanks! So each file has an op-depth=0, presence=normal line that has a > checksum. Can you verify that each checksum exists in pristine: > > sqlite3 .svn/wc.db "select * from pristine where checksum > ='$sha1$a6fb31cbea18a2f670e5d1387b2a1b118f831f09'" > sqlite3 .svn/wc.db "select * from pristine where checksum > ='$sha1$9addd651cd4260ee52b26cf5eae2d2bfe798aba5'" > sqlite3 .svn/wc.db "select * from pristine where checksum > ='$sha1$041ffe70415ce290a4f14a770d869e2eb3b420e8'" > sqlite3 .svn/wc.db "select * from pristine where checksum > ='$sha1$ea6871c7f57dd63e0a74ac0fd19435232322e5ff'" These queries returned no results. > What I don't yet understand is why each file also has an op-depth=1, > presence=base-deleted row. That seems to imply that 'X' is deleted in > the working copy, so we should see two lines here: > > sqlite3 .svn/wc.db "select op_depth, presence from nodes where > local_relpath='X'" This returned: 1|incomplete 0|incomplete The 'X' folder was not and should not have been deleted or marked for deletion in the working copy or in the repository. The MONSTER.FMX folder was added beneath it and was pulled down for the first time during that update.