[ https://issues.apache.org/jira/browse/SVN-4662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15690346#comment-15690346 ]
Andrey commented on SVN-4662: ----------------------------- It's a bit unintuitive. Why i have to use in *svn* the *git-compatible* arguments? I thought it should be by default does preserve move operations w/o additional arguments. At least the patch (trunk.patch) having this: Index: dir1/file1.txt =================================================================== --- dir1/file1.txt (revision 2) +++ dir1/file1.txt (nonexistent) @@ -1 +0,0 @@ -111 \ No newline at end of file Index: dir1/file2.txt =================================================================== --- dir1/file2.txt (revision 2) +++ dir1/file2.txt (nonexistent) @@ -1 +0,0 @@ -222 \ No newline at end of file Index: dir1/file3.txt =================================================================== --- dir1/file3.txt (revision 2) +++ dir1/file3.txt (nonexistent) @@ -1 +0,0 @@ -333 \ No newline at end of file Index: dir2/file1.txt =================================================================== --- dir2/file1.txt (revision 2) +++ dir2/file1.txt (working copy) @@ -1 +1 @@ -111 \ No newline at end of file +1112222 \ No newline at end of file Index: dir2/file2_.txt =================================================================== Why the svn patch didn't tell anything about ignored indexes? Index: dir2/file1.txt Index: dir2/file2_.txt > svn diff-revert-patch breaks moved files and folders > ---------------------------------------------------- > > Key: SVN-4662 > URL: https://issues.apache.org/jira/browse/SVN-4662 > Project: Subversion > Issue Type: Bug > Affects Versions: 1.9.4 > Environment: windows 7 x64, tortoisesvn command line tools > Reporter: Andrey > > Steps to reproduce: > 1. Create empty repository on local drive, for example, "repo" > 2. Checkout a working copy: repo_root > 3. Add directory structure: > trunk/dir1/file1.txt > trunk/dir1/file2.txt > trunk/dir1/file3.txt > trunk/dir2/ > (actually, the structure can be anything, does not much matter) > 4. switch current directory into the trunk/ > 5. make a local change with file: dir1/file1.txt > 6. make a move (remove all other files/folders not need to be moved): > >svn move dir1/file1.txt dir2/file1.txt > A dir2\file1.txt > D dir1\file1.txt > >svn move dir1/file2.txt dir2/file2_.txt > A dir2\file2_.txt > D dir1\file2.txt > >svn remove dir1 > D dir1 > D dir1\file3.txt > 7. make a patch: > >svn diff . > trunk.patch > 8. revert all back: > >svn revert . -R > Reverted 'dir1' > Reverted 'dir1\file1.txt' > Reverted 'dir1\file2.txt' > Reverted 'dir1\file3.txt' > Reverted 'dir2\file1.txt' > Reverted 'dir2\file2_.txt' > 9. apply the patch: > >svn patch trunk.patch . > D dir1\file1.txt > D dir1\file2.txt > D dir1\file3.txt > D dir1 > Skipped missing target: 'dir2\file1.txt' > Summary of conflicts: > Skipped paths: 1 > As you see, entire set of files + 1 change has lost. Commit of this will be > definitely broken and the consequenced revert is immenent. > In mine case it was the TortoiseSvn where the implementation of move semantic > in the patch was a slightly different and at least has saved some files from > loss. -- This message was sent by Atlassian JIRA (v6.3.4#6332)