2

我们有 perforce 在工作中,关于它的一件事似乎确实与工作流配合得很好,那就是待定的变更集。

我可以创建一个新的待处理变更集,为其分配更改,为其分配 jira 票证,等等……我可以将文件搁置在那里并在其他变更集中进行其他更改。然后,当它是签入时间时,我可以通过简单地提供变更集 ID 来推送这些更改。

是否有任何主要的分布式修订控制系统提供类似的功能?我看到大多数提供搁置的变体,但未决的变更集?

编辑 - 一个澄清的例子:

我有一个文件 AZ 的项目。我在对我正在进行的源更改进行更改之前进行了更新。我注意到我还没有准备好采用的更改已经完成,所以我通过修改 A 和 B 创建了一个 hack。然后我对文件 C、D 和 E 进行了更改。

我只想签入后三个,我想附上我正在回复的 jira 票。在 p4v 中,这就像创建一个新的“待定变更集”并检查我想要的文件以及票号一样简单。然后我提交我的待定变更集。然后,我可以保留我的 hack 以备下次运行或恢复它。

4

3 回答 3

8

Mercurial 有两个与此非常相似的功能。第一个也是较早的一个称为Mercurial Queues ,它们基于Quilt,但已集成到 Mercurial 中。那本书的章节值得一读,但它们基本上让您拥有一系列可以随意推送、弹出和编辑的重叠变更集。它们与搁置(git 或 Mercurial)的不同之处在于它们可以被推/拉,并且实际上可以在单独的特定于队列的存储库中自己进行版本控制。

沿着这些思路的第二个新功能是阶段功能。它跟踪每个变更集的阶段,可以是publicdraftsecret。wiki 页面包含完整的详细信息,但基本上public是您推送到另一个 repodraft的任何内容,是您尚未推送的任何内容(因此可以编辑而无需担心破坏人们的历史),并且private是一个不会被你推的时候hg push。您可以使用阶段以及histedit甚至commit --amendMercurial 队列来确保变更集在您满意之前不会离开您的机器。

于 2012-12-08T22:49:44.713 回答
1

Git 有stashes的概念,它们是相似的——你可以有多个 stashes 并描述其中的内容。主要区别在于存储是本地的,而 P4 的待处理更改列表在服务器上。如果其他人需要查看您的待处理更改列表,这可能很重要。

于 2012-12-08T23:11:00.247 回答
1

Git也有索引的概念。您可以将文件添加到索引中,默认情况下,它只提交索引中的文件。您可以修改许多文件并将其中一些放在索引中,而将其他文件留在工作区中。您甚至可以在索引中修改和排队一个文件,并在工作区中对同一文件进行不同的修改。

于 2012-12-08T23:25:55.687 回答