Subversion:如何提交更新到特定版本?

13

我遇到了这样的情况:

  • 开发人员正在使用SVN项目。
  • 某人检查了SVN项目,走开后,孩子/猫/妻子坐在电脑前,随意插入无用代码。该人提交了项目。
  • 开发人员看到了错误的文件并回滚为上一个可工作版本。

一切都很好,直到开发人员想要提交项目。如果开发人员对相关文件进行了更改,那么提交将正常进行。但是,如果没有更改 - 开发人员只更新到修订版,并没有进一步更改 - 那个文件将无法提交,而对项目的任何更新都将呈现出乱码的asdfg-code文件。

问题: 如果我只是“更新到修订版”一个文件,如何在不手动编辑文件的情况下再次提交它?

5个回答

7
我认为你选择了错误的解决问题的方法。
与其改变你所查看的版本,你应该:
1.更新到包括垃圾的最新版本;
2.在版本记录中找到垃圾提交并选择撤消此更改;
3.将清理提交到你的工作副本中,可以与其他更改一起提交,也可以单独提交。
现在你需要做的是更新到最新版本(包括垃圾更改),然后撤消他们的更改,这样就回到了正确的轨道上。这几乎就像他们在你工作时进行更改,而你一开始并没有进行更改。
只有当你的代码与工作分支/主干的最新版本保持一致时才能提交。
SVN不会动态地为你创建一个分支或早期版本,你必须选择创建一个分支或更新到最新版本。

1
@Rob:无法回溯更改修订版本。这是版本控制的一个重要点... - Michael Borgwardt
使用svn命令行客户端,如何执行第二步(“撤销此更改”)? - mcmlxxxvi
取决于您的命令行客户端 - 请参见以下答案的示例:https://dev59.com/HXE85IYBdhLWcg3wLAUV#2907754 - Greg Domjan
你的方法有效(谢谢!),但我仍然感到困惑:为什么这种方法与原帖中描述的方法不同?直觉上,我认为“更新到修订版...”应该做同样的事情。(但它没有,正如原帖所解释的那样。为什么呢?) - kmote
啊,我刚在这个答案的第一段找到了一个解释,解决了我的困惑。 - kmote
显示剩余2条评论

3
如果您使用的是Windows系统,并且正在使用TortoiseSVN:
  1. 右键单击目录,选择“TortoiseSVN > 合并...”
  2. 选择“合并一系列版本”
  3. 在“要合并的URL”中选择当前分支(即当前目录中检出的分支)
  4. 在“要合并的版本范围”中输入或选择(“显示日志”)最近一个错误的版本
  5. 勾选“反向合并”复选框
然后,在合并之后,只需提交即可! :)

2
您可以使用以下方法简单地撤消更改。
svn merge -c -RevisionWhichWasWrong ^/trunk

RevisionWhichWasWrong 是你最后一次检查过的版本。之后只需执行以下操作:

svn commit 

这就是全部。

顺带一提:如果您从未更改过文件内容,则无法进行签入操作。


0

好问题!据我所知,唯一的方法是手动向文件添加空格或其他内容,以便Subversion将文件视为已更改。之后,它会创建一个新版本。


0


1- 更新到你想要的特定版本。

2- 将此版本导出到文件夹中。

3- 更新工作副本到最新版本。

4- 将导出的文件和文件夹覆盖到工作副本文件夹中。

5- 提交!





网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接