3

据我了解,您无法真正修复 Hg 中的评论。所以我想做的是重新推送完全相同的更改(或者至少“触摸”相同的文件并再次提交和推送)。

这是必要的原因是因为我们有一个依赖于特定评论模式的错误跟踪和构建系统,我们需要确保正确的文件包含在构建中,但是如果我忘记更新我的评论中的错误#我的最后一次提交,我不小心提交并把它推到了错误的 # 因为我过于热心,我怎样才能再次重新推送这些相同的文件而不手动进入每个文件并添加空格或换行符来创建差异?

澄清一下,我不能“回滚”什么的;它已经被推送了错误的消息。

4

3 回答 3

3

据我所知,当前的 Mercurial 功能对此不提供支持。推送变更集后,除了从服务器存储库和任何其他开发人员的存储库中剥离它之外,您几乎无法取消推送它。

我想你应该问问那些在你的商店里设置这个工作流程的人;他们应该为此想出一些异常处理程序。

我们通常只是忽略这样的问题,并手动关闭错误,确保错误链接到正确的变更集。如果变更集真的搞砸了(通常这意味着错误的更改,而不是格式错误的提交消息),我们会求助于剥离。

于 2012-06-06T06:32:22.577 回答
2

由于您的更改已被推送,您不能使用简单的修复,例如“hg commit --amend”,但您可以执行类似的操作。基本上,以下命令在 Mercurial 的帮助下重新执行提交:

CSET=...the changeset to re-do...
hg up -r "p1($CSET)"    # Update the working directory to the parent revision
hg log -r "$CSET" -p > changes.patch
hg import --no-commit changes.patch
hg commit     # And use the appropriate commit message.

然后,合并并推送。

于 2012-06-06T18:24:09.337 回答
1

我能想到的唯一方法是再提交两个更改,一个是hg backout不正确的修订版,另一个是hg backout带有更正注释的修订版。

不过我不喜欢这个想法,如果有任何方法可以解决你的错误跟踪系统中的问题,我不会推荐它。

于 2012-06-06T08:33:28.567 回答