如何使用不同的注释重新提交最后一个变更集?

时间:2012-06-05 23:32:32

标签: mercurial

As I understand it,你无法在Hg中修复评论。所以我想做的是重新推送完全相同的更改(或者至少“触摸”相同的文件并再次提交和推送)。

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

澄清一下,我不能“回滚”或其他东西;它已被推送并显示错误消息。

3 个答案:

答案 0 :(得分:3)

据我所知,目前的Mercurial功能不支持此功能。推送变更集之后,除了从服务器仓库和任何其他开发人员的仓库中删除它之外,你几乎无法解除它。

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

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

答案 1 :(得分: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.

然后,合并并推送。

答案 2 :(得分:1)

我能想到这样做的唯一方法是再提交两个更改,一个是错误修订的hg backout,另一个是更正的修订版hg backout评价。

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