Hi, folks. I have successfully used Subversion for many years and in general I am happy with it, so I have always defended this VCS when my friends or colleagues argued in favor of git and other things. But today I stepped into a very unpleasant situation which I would like to clarify. I have made a large change to my working copy. I would love to have created a branch and made a series of little neat commits instead but I could not due to a specific 'trunk based development' policy of my new employer. Neither could I commit to trunk because my new colleagues would not approve the code review unless it contains all the necessary stuff -- unit tests, etc. So I had around 10 files pending modified and around 10 files which were copied/removed/moved. Pretty uncomfortable situation, if you ask me -- again, I would really, really love to have it all sequentially commited in a feature branch.
Then I needed to revert all the changes in the working copy to check if one test which failed with my changes, worked. I used the following sequence of commands: $ svn diff > my.patch $ svn revert -R . $ # ... check the test ... $ svn patch my.patch Afther applying the `svn patch` command I got a bunch of tree conflict situations and rejected hunks of modifications. I am now preparing myself to deal with this somehow (probably by manually copying/moving the files first and then re-applying the patch) but first I decided to check what happened. It seems like `svn diff` cannot produce a patch which would preserve copy/move information. I tested this hypothesis in a separate repo and it proved true. During my tests I discovered the `svn shelve` command which is supposed to do precisely what I needed and its description states "The kinds of change you can shelve are those supported by 'svn diff' and 'svn patch'. The following are currently NOT supported: mergeinfo changes, copies, moves, mkdir, rmdir, 'binary' content, uncommittable states", so indeed Subversion could not do what I wanted it to do. Not only the described behavior contradicts the principle of least astonishment, there is no way (by supplying specific flags to `svn diff/patch`) of making Subversion save the full change and restore it. This is at least disappointing. Are there any plans to tackle this issue? Regards, Timur Khanipov P.S. I am using Subversion version 1.10.0, r1827917.