0

我有一个使用 Mercurial 的项目,我独自工作,并且经常发现自己一遍又一遍地处于相同的情况:在工作期间,我意识到在完成当前工作之前应该修复并提交其他更改. 所以,我试图创建一个“匿名分支”

hg update --check PREVIOUS_REVISION

但不幸的是,它不适用于未提交的更改(我真的不想提交未完成的工作)。所以,每次,我都会复制带有源代码的目录,恢复到以前的版本,修复,提交,切换回我的工作副本,取更改并继续我的工作......但这需要太多时间,所以也许有更好的如何做到这一点,只需一份来源?谢谢你。

PS 可能,这与我如何在处理其他事情时将一堆未提交的更改放在一边是同一个问题,但我的想法是“是否可以将未完成的工作留在'原样'状态的默认分支中,然后继续工作稍后,不加载外部补丁?” (无论如何,如果它是重复的,请随时关闭它)

4

3 回答 3

2

解决“间歇性工作”任务的三种方法

  • 使用搁置扩展:保存所有当前更改hg shelve --all,在干净的 WC 中进行所需的独立更改,提交,恢复工作的中间结果,保存在步骤 1hg unshelve
  • 使用匿名分支:“按原样”提交你的 WC,hg up <REV>到之前的提交,进行“必须在之前”的更改,提交,返回到旧的头,合并头,继续工作
  • 使用MQ 扩展:使用MQ 教程作为起点,第一章:“Mq for the impatient”(在您的情况下,在 qrefresh 和 qfinish 之间将是纯提交)

我会更喜欢(并且总是用于不同的任务)MQ

添加:

对于“干净历史”的粉丝和崇拜者,匿名分支工作流程的一种可能变化(避免合并)

  • hg commit -m "Unfinished work"(转 M)
  • hg up -r "tip^1"
  • ...
  • hg commit -m "Base changes"(转 N)
  • hg rebase -r M -d N(线性化历史)
  • hg up
  • ...
  • hg commit --amend -m "Full dependent change"

PS:我在反向变更集中看不到任何不好的地方,即a = something(data)在 CSET 和function something (int subject) {...}CSET+1 中写入

于 2013-01-13T23:25:56.607 回答
0

提交未完成并不是一件坏事。它可以帮助您在硬盘崩溃之类的事情中幸存下来。为什么不使用诸如“这正在进行中”之类的提交消息来提交您正在进行的代码,做您需要做的任何其他事情,然后继续处理它?

根据定义,旧的提交是未完成的。这就是为什么你在他们之后做出了更多的事情。不要担心旧存储库的状态。

当然,你应该治愈你在特性分支中工作,这样你就可以将你的代码推送到一个不是default.

于 2013-01-13T19:28:24.960 回答
0

如果“必须”更改是不同的代码块,为什么不hg record,并选择“必须”块并在其他代码之前提交。

于 2013-01-25T05:36:45.437 回答