hg mq插件的目的是能够对您的存储库进行完美的提交,而不会混淆您通过代码在心不在焉的ADHD引起的漫游中所做的更改;
例如......
我正在研究bug x,当我发现bug y并开始研究它时。此时,您应该在修补程序队列中创建一个新的修补程序,以便在将hg qfinish
提交到您的存储库时不要混淆这些更改。
现在假设您忘记制作新补丁并在此过程中hg qrefresh
。然后意识到你的错误,你希望将那个补丁的变化分成两个补丁。
我意识到它与编辑队列中的补丁文件(和新补丁文件)有关,可以将更改分成单独的补丁和以后的提交。但是,我还不熟练编辑diff补丁文件。
我在哪里可以了解这一点?怎么会这样呢?
答案 0 :(得分:3)
另一个选项(假设它在您的平台上运行)是TortoiseHG的2.0版本。 “不恰当”命名的Shelve实用程序允许在补丁之间移动块和文件,或者移动到工作目录中。它适用于Windows,Linux和OSX。
答案 1 :(得分:2)
如本related SO question所述,请查看MQ教程的“Split a patch into multiple patches”部分。
答案 2 :(得分:2)
您可以激活record extension,将.hgrc添加到以下行:
[extensions]
hgext.record =
您可以使用
清除当前的补丁hg qrefresh nothing
(请注意,“nothing
”只是一个随机字符串:qrefresh
的参数是必须包含在当前补丁中的文件列表,所以任何不是名称的修改后的文件会做 - 我通常使用“0”)
现在使用hg qrecord <patchName>
,您可以交互式选择新修补程序中必须包含哪些更改。然后,可以将其余更改添加到使用qnew
或其他qrecord
的其他修补程序中。您最终可以使用qpop
,qfold
或编辑.hg/patches/series
来合并和重新排序修补程序。
答案 3 :(得分:0)
我有一个shell别名viq="vim $(hg root)/.hg/patches/"
,我只是用于这些情况!
我只需运行viq
来提取补丁,然后手动编辑差异并根据需要将帅哥移动到其他补丁中。
我比交互式方法(例如git add -i
)更喜欢这个,因为我从交互式提示中感觉不安全,就像我在编辑器中工作一样(我知道我的编辑器进行备份,具有琐碎的撤销功能)等等......)。