subversion-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bert Huijben (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (SVN-4662) svn diff-revert-patch breaks moved files and folders
Date Wed, 23 Nov 2016 12:42:58 GMT

    [ https://issues.apache.org/jira/browse/SVN-4662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15690000#comment-15690000
] 

Bert Huijben edited comment on SVN-4662 at 11/23/16 12:42 PM:
--------------------------------------------------------------

I see you used plain 'svn diff' to generate your patch. In this case breaking moves is completely
expected as 'svn diff' doesn't produce any move information at all. It just generates a unified
diff for user inspection.

$ svn diff --git .
followed by svn patch might just handle your usecase. This variant handles (some) tree operations.

While
$ svn diff --patch-compatible .
tries to produce diffs that can be applied by a generic patch tool.


was (Author: rhuijben):
I see you used plain 'svn diff' to generate your patch. In this case breaking moves is completely
expected as 'svn diff' doesn't produce any move information at all. It just generates a unified
diff for user inspection.

$ svn diff --git . your issue
followed by svn patch might just handle your usecase. This variant handles (some) tree operations.

While
$ svn diff --patch-compatible
tries to produce diffs that can be applied by a generic patch tool.

> 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)

Mime
View raw message