Mercurial:立即设置多个变更?

时间:2011-01-14 18:28:58

标签: mercurial perforce

之前,当我使用perforce时,只要代码不影响相同的文件,我就可以同时处理多个错误,同时打开多个更改集。

变更集1:


  • A.TXT
  • B.txt
  • C.txt

变更集2:


  • D.txt
  • E.txt
  • F.txt

我可以在不提交变更集1的情况下将变更集2提交到存储库(因为它仍在进行中)

Mercurial可以实现吗?除了将每个文件作为单独的提交?

5 个答案:

答案 0 :(得分:3)

您可以随时执行:hg commit D.txt E.txt F.txt只提交那些将A.txt,B.txt和C.txt保留为uncommited的文件。使用-I选项提交允许您使用模式进行提交,例如,如果它们位于公共目录中:hg commit -I 'dir1/**'

答案 1 :(得分:2)

您可以拥有两个单独的分支(工作副本)并在另一个分支中进行一次更改。这是单向的。

另一种方法是使用Mercurial Queues。如果变更集彼此之间没有依赖关系,您可以使用qpush --move来更改变更集的顺序,这样您就可以使用qfinish来提交'准备就绪的第一个变革集。

答案 2 :(得分:2)

您实际上并未在Mercurial中将变更集“打开”。

您已经提交了更改,或者您没有。

但是,您可以拥有多个具有未提交更改的文件,并且只提交其中的一些。甚至可以提交部分文件,块,而不是整个文件。

如果我要做你要问的事我只想在我的第一个克隆本地制作另一个克隆,并在两个不同的工作文件夹中处理两个不同的修复。然后我拥有将两者结合起来所需的所有自由(本地推/拉),推送到服务器等等。

答案 3 :(得分:0)

在Mercurial中,克隆是在本地完成时的廉价操作。只需克隆您正在处理的每件事的存储库。每件事情都准备好后,回到主存储库:

hg clone http://project project
hg clone project project-bugfix   // uses hardlinks and is inexpensive.
hg clone project project-feature
<edit bugfix and feature as needed>

但请记住,默认的推送位置是克隆的项目,因此您需要编辑.hg \ hgrc的“项目”克隆的默认推送路径,或者确保从“项目”中hg push http://project -bugfix“和”project-feature“完成后。

答案 4 :(得分:0)

即使您的修改涉及相同的文件,您也可以选择要包含的内容(hunk by hunk)。您只需激活record扩展名(默认情况下未安装,即可安装)。

要激活记录扩展程序,请将其放在[extensions]的{​​{1}}部分中:

.hgrc

然后提交,将[extensions] hgext.record= 替换为hg commit。让我们假设您的示例更改集具有hg record文件,该文件对两个更改集都有更改。承诺:

G.txt

回答问题,例如:

hg record D.txt E.txt F.txt G.txt