SVN Revert Trunk, remove a revision as if it never existed?

后端 未结 5 1888
悲哀的现实
悲哀的现实 2021-01-04 05:02

Is it possible in the svn server to remove a revision as if it never existed?

So we have the following revisions:

1004 // Commit of some bogus code t         


        
相关标签:
5条回答
  • 2021-01-04 05:40

    You can move the trunk to another branch (backup) and copy the correct revision back to trunk

    svn mv trunk https://svn_path/tags/trunk_broken
    svn cp -r revNo http://svn_path/tags/trunk_broken http://svn_path/trunk
    

    Please note the revision number will increment and all changes will be displayed in svn log.

    0 讨论(0)
  • 2021-01-04 05:46

    You can create a dump of the current repository and skip the bogus Revision in the dump. You can then load the dump to a new repository on the same server or on a different one.

    0 讨论(0)
  • 2021-01-04 05:51

    VCS systems are designed specifically to make this as complicated as possible. You usually do not want to do this.

    That being said, from the official documentation:

    There are special cases where you might want to destroy all evidence of a file or commit. (Perhaps somebody accidentally committed a confidential document.) This isn't so easy, because Subversion is deliberately designed to never lose information. Revisions are immutable trees which build upon one another. Removing a revision from history would cause a domino effect, creating chaos in all subsequent revisions and possibly invalidating all working copies.

    The project has plans, however, to someday implement an svnadmin obliterate command which would accomplish the task of permanently deleting information. (See issue 516.)

    In the meantime, your only recourse is to svnadmin dump your repository, then pipe the dumpfile through svndumpfilter (excluding the bad path) into an svnadmin load command. See chapter 5 of the Subversion book for details about this.

    http://subversion.apache.org/faq.html#removal

    0 讨论(0)
  • 2021-01-04 05:51

    I recommend leaving the revision if you don't have a real reason (Shortage in space for example) to remove it. This is the main job of the SVN server, to keeps changes.

    0 讨论(0)
  • 2021-01-04 05:54

    These accidents hapen, and it's not a problem if SVN keeps them in its history. What is important is to fix the accident. The way to do it is to revert the changes made by this commit. use the following commands:

    svn merge -r [current_version]:[previous_version] [repository_url]
    svn commit -m “Reverting previous commit and going back to revision [previous_version].”
    

    If you're using TortoiseSVN, you could just show the logs, select the commit, and choose "Revert changes from this revision" in the context menu. It will change your working copy to the previous version, and you'll just have to commit.

    I guess other graphical clients have the same option.

    0 讨论(0)
提交回复
热议问题