subversion-issues mailing list archives

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

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

Stefan Sperling commented on SVN-4662:
--------------------------------------

The index lines are ignored by 'svn patch'. Many diff tools do not produce such lines, and
'svn patch' is intended to be generally compatible with every conceivable unidiff.

Git has defined custom extensions to express some kinds of tree changes. These are optional
and currently not well supported.

Both of these problems already have open issues filed for them:
https://issues.apache.org/jira/browse/SVN-1056
https://issues.apache.org/jira/browse/SVN-4648

We would appreciate if you would raise such concerns on our users@ mailing list before filing
an issue here. It is a lot easier to field questions about bugs there.
Please read http://subversion.apache.org/reporting-issues.html if you have not already. Thanks.

> 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