我对svn通常遵循的工作流感兴趣。如果我进行更新(这是在没有持续集成或自动回归测试的环境中)来更改其他签入,有时会出现严重错误。一些功能 是破碎的,甚至可能需要花费大量时间追踪谁负责或撤销变更......在这种情况下,我只想让我的“更新前”环境回来......
这种情况下的常态是什么?我希望我的问题很清楚。
答案 0 :(得分:1)
如果您只是回滚到以前的修订版号,您也将丢失在更新之前(在工作副本上)可能发生的本地更改,即在命运更新之前未提交给服务器的更改,但是在更新期间合并。
通常,每个需要提交更改的人都需要先在自己的版本上进行更新,然后检查一切是否稳定,“经过测试”,或至少是编译(我更喜欢它是下一个防弹的一个来)。然后,提交他/她的更改。 因此,一旦您需要更新,您就可以获得保险,此更新至少在一个环境中保留。
如果您正在使用的其他人不合作,您可以自己创建分支,并在需要时执行合并。您可以在分支上提交合并前所做的任何更改。因此,如果发生严重破坏,它们将被保留。 您可以尝试的另一件事是评估“谁”最扰乱存储库(从先前版本的稳定性方面),并建议它们暂时在另一个分支上开发。
答案 1 :(得分:1)
您可以通过以下方式重新制作工作副本:
svn update -r <revision_before_trouble>
SVN客户端将反向合并当前工作副本版本与您要更新的旧版本之间的变更集。对于SVN,合并或反向合并是相同的 - 它只是将差异应用于文件。
您的本地更改不受影响。如果本地更改与正在反向合并的变更集之间存在冲突,则通常的SVN合并过程适用 - 即。您使用svn resolve
选择要保留的更改。您不会丢失所有本地更改。
此过程会将您的工作副本恢复到故障开始前的状态。
答案 2 :(得分:0)
您可以随时更新回特定版本号。
svn up -r <revision_number>