Undoing specific revisions in Subversion

后端 未结 3 1880
隐瞒了意图╮
隐瞒了意图╮ 2020-12-23 14:05

Suppose I have a set of commits in a repository folder...

123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folde         


        
相关标签:
3条回答
  • 2020-12-23 14:54

    I suppose you could create a branch from revision 117, then merge everything except 118 and 120.

    svn copy -r 117 source destination
    

    Then checkout this branch and from there do svnmerge.py merge -r119,120-123

    EDIT: This doesn't undo the revisions in the branch/trunk. Use svn merge instead.

    0 讨论(0)
  • 2020-12-23 15:08

    To undo revisions 118 and 120:

    svn up -r HEAD       # get latest revision
    svn merge -c -120 .  # undo revision 120
    svn merge -c -118 .  # undo revision 118
    svn commit           # after solving problems (if any)
    

    Also see the description in Undoing changes.

    Note the minus in the -c -120 argument. The -c (or --change) switch is supported since Subversion 1.4, older versions can use -r 120:119.

    0 讨论(0)
  • 2020-12-23 15:11

    There's a more straightforward way if you use TortoiseSVN, a Windows client for Subversion. You just click to view the log in your updated work copy, select the revisions you want to undo, right click, and select "Revert changes from these revisions".

    It is a safe operation because the changes are applied just in your workspace. You still have to commit to modify your repository.

    It is one of the best features of TortoiseSVN. I've always been a command line guy, but Tortoise changed my mind.

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