5

hg mq 插件的目的是能够完美地提交到您的存储库,而不是混淆您在心不在焉的 ADHD 中所做的更改,从而导致在您的代码中漫不经心;

例如....

当我注意到错误 y 并开始处理它时,我正在处理错误 x。此时,您应该在补丁队列中创建一个新补丁,以免在将更改hg qfinish提交到您的存储库时混淆更改。

现在假设您忘记了制作新补丁并在此过程中hg qrefresh。然后后来意识到你的错误,你希望将一个补丁的更改分成两个补丁。

我意识到这与编辑队列中的补丁文件(和新的补丁文件)有关,以将更改分成单独的补丁并稍后提交。但是,我还不擅长编辑差异补丁文件。

我在哪里可以了解这一点?怎么可能呢?

4

4 回答 4

3

另一个选项(假设它在您的平台上运行)是 TortoiseHG 2.0 版。“不恰当”命名的 Shelve 实用程序允许在补丁之间移动块和文件,或移动到工作目录中。它适用于 Windows、Linux 和可能的 OSX。

http://tortoisehg.bitbucket.io/

于 2011-03-24T17:24:35.713 回答
2

如这个相关的 SO 问题中所述,请查看 MQ 教程的“将补丁拆分为多个补丁”部分。

于 2011-03-24T17:21:26.610 回答
2

您可以激活记录扩展名,在 .hgrc 中添加以下行:

[extensions]
hgext.record =

您可以使用清除当前补丁

hg qrefresh nothing

(注意“ nothing”只是一个随机字符串:参数qrefresh是必须包含在当前补丁中的文件列表,所以任何不是修改文件名的都可以——我通常使用“0”)

现在,hg qrecord <patchName>您可以交互地选择哪些更改必须在新补丁中进行。然后可以将剩余的更改添加到另一个带有qnew或另一个qrecord. 您最终可以使用qpop,qfold或 edit.hg/patches/series来合并和重新排序补丁。

于 2011-05-17T14:28:34.443 回答
0

我有一个 shell 别名 ,viq="vim $(hg root)/.hg/patches/"仅用于这些情况!

我只是跑去viq拉起补丁,然后手动编辑差异并将大块头移动到其他适当的补丁中。

我更喜欢这种交互方法(例如,git add -i),因为我觉得在交互式提示下工作不如在我的编辑器上工作那样安全(我知道我的编辑器会进行备份,有微不足道的撤消等......)。

于 2011-03-24T16:58:37.587 回答