[ 
https://issues.apache.org/jira/browse/SVN-4680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrey updated SVN-4680:
------------------------
    Description: 
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 in the attachment for reproduction.

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.


  was:
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.



> 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
>              Labels: obstructing
>         Attachments: test_update_issue.bat
>
>
> 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 in the attachment for reproduction.
> 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)

Reply via email to