2

我经常发现自己需要在当前正在处理的更改完成之前切换到进行不同的更改。我想知道在 Mercurial 中是否有一种方法可以保存/提交我未完成的更改,其他人无法使用该更改(即不可克隆/可推/可拉)。

4

3 回答 3

4

Mercurialphases可能是这个问题的答案。

从 Mercurial v2.1 开始,您可以将mq变更集配置为自动标记为secret. secret传入/拉取和传出/推送命令会忽略变更集。

要启用此行为,您需要将以下内容添加到您的配置中:

[mq]
secret = True

启用后,它的行为如下:

$ hg qpush --all
applying my-patch
now at: my-patch

$ hg phase -r .
16873: secret

$ hg outgoing
comparing with https://www.mercurial-scm.org/repo/hg
searching for changes
no changes found (ignored 1 secret changesets)
于 2012-06-11T14:07:17.220 回答
2

看看Shelve Extension。这为您提供了基础知识,并且可能足以满足您的需要。

还有Mercurial Queues Extension,但我发现使用它可能有点奇怪。

作为最后的选择,您始终可以将更改提交到另一个分支,这样它们就不会影响主线开发,但我认为这些可能仍然可见。

于 2012-06-11T13:38:58.833 回答
1

你可以将你的 repo 克隆到一个新的地方来处理新的变化。这样,您的未决更改将保留在本地计算机上,并且永远不会被推送。当然,这取决于您的仓库的大小。如果它太大,克隆就会变得有点令人望而却步。

正如其他人所建议的那样,您可以将不可用的更改标记为私有分支。推送时,您可以使用-b参数推送显式分支。因此,如果您的私有分支是TimPrivateBranch,并且其他更改正在进行default

 hg push -b default

TimPrivateBranch留在您的本地计算机上。当然,这要求你-b每次推送时都要记住参数。

完成私有分支后,只需合并回默认分支:

hg up default
hg merge TimPrivateBranch
于 2012-06-12T01:40:28.117 回答