You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@subversion.apache.org by "Andrey (JIRA)" <ji...@apache.org> on 2017/05/07 21:57:04 UTC
[jira] [Created] (SVN-4680) obstructing working copy after clean
update to a revision
Andrey created SVN-4680:
---------------------------
Summary: obstructing working copy after clean update to a revision
Key: SVN-4680
URL: https://issues.apache.org/jira/browse/SVN-4680
Project: Subversion
Issue Type: Bug
Affects Versions: 1.9.5
Environment: windows 7 x64, tortoise svn tools
Reporter: Andrey
If try to move some directory into new place and make external on the old place of the moved directory with the same name, then the svn stops update this external properly if execute backward update into revision below the commit with new external.
See the windows batch script for reproduction:
{quote}
@echo off
set REPODIR=test_repo
set "REPOROOT=%~dp0%REPODIR%"
set "REPOURL=file:///%REPOROOT:\=/%"
set WCROOT=%REPODIR%_root
if exist "%REPOROOT%\" ( rmdir /S /Q "%REPOROOT%" || goto :EOF )
if exist "%WCROOT%\" ( rmdir /S /Q "%WCROOT%" || goto :EOF )
mkdir "%REPOROOT%"
svnadmin create "%REPOROOT%" || goto :EOF
mkdir "%WCROOT%"
svn co "%REPOURL%" "%WCROOT%" || goto :EOF
rem creating tree w/o externals
mkdir "%WCROOT%/dir1" || goto :EOF
type nul > "%WCROOT%/dir1/file1.txt" || goto :EOF
mkdir "%WCROOT%/dir2" || goto :EOF
type nul > "%WCROOT%/dir2/file2.txt" || goto :EOF
svn add "%WCROOT%/*.*" || goto :EOF
svn ci "%WCROOT%" -m "rev1" || goto :EOF
rem update to the head
svn up "%WCROOT%"
rem move /dir2 into /ext
mkdir "%WCROOT%/ext" || goto :EOF
svn add "%WCROOT%/ext" || goto :EOF
svn mv "%WCROOT%/dir2" "%WCROOT%/ext" || goto :EOF
svn pset svn:externals "^/ext/dir2 dir2" "%WCROOT%"
svn ci "%WCROOT%" -m "rev2" || goto :EOF
rem update to the head
svn up "%WCROOT%"
rem conflict: 'test_repo_root\dir2' -- An obstructing working copy was found
svn up -r 1 "%WCROOT%"
rem dir2 is not properly updated after this point
exit /b
{quote}
The output is:
{quote}
Checked out revision 0.
svn: Skipping argument: E200025: 'test_repo_root/.svn' ends in a reserved name
A test_repo_root\dir1
A test_repo_root\dir1\file1.txt
A test_repo_root\dir2
A test_repo_root\dir2\file2.txt
Adding test_repo_root\dir1
Adding test_repo_root\dir1\file1.txt
Adding test_repo_root\dir2
Adding test_repo_root\dir2\file2.txt
Transmitting file data ..done
Committing transaction...
Committed revision 1.
Updating 'test_repo_root':
At revision 1.
A test_repo_root\ext
A test_repo_root\ext\dir2
D test_repo_root\dir2
D test_repo_root\dir2\file2.txt
property 'svn:externals' set on 'test_repo_root'
Sending test_repo_root
Deleting test_repo_root\dir2
Adding test_repo_root\ext
Adding test_repo_root\ext\dir2
Committing transaction...
Committed revision 2.
Updating 'test_repo_root':
Fetching external item into 'test_repo_root\dir2':
A test_repo_root\dir2\file2.txt
Updated external to revision 2.
At revision 2.
Updating 'test_repo_root':
D test_repo_root\ext
Skipped 'test_repo_root\dir2' -- An obstructing working copy was found
U test_repo_root
Removed external 'test_repo_root\dir2'
Updated to revision 1.
Summary of conflicts:
Skipped paths: 1
{quote}
I know this is old issue, but why a clean copy could not be so as clean updated?
Why the externals does not process for remove before the update to a revision? If you do so this error would not happen.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)