0

我有一个大背景的小问题。让我问一个简短的版本,然后稍微扩展一下。

我的问题的简短版本如下。

想象一种情况 - 你有一个分支 A,其变更列表为 1000 到 1004。然后你从变更列表 1004 创建分支 B 并添加几个修订版(1005、1006)。之后,您需要从分支 B 中删除 changelist 1002 引入的增量。我该怎么做?如果我在分支 A 上需要它 - 没问题,只需回滚到 1001 并重新集成 1003-1004。但是我需要删除一个在其历史中没有此更改列表的分支上的更改列表引入的增量。那么我该怎么做这个“选择性删除”呢?

我的问题的歌词背景如下。早在我还是 ClearCase 工程师的时候,我有时会使用一种称为“减法合并”的功能。我调用了“合并”命令,指出了 2 个版本来识别一个增量和一个类似“删除”的标志(这是几年前的事情,我忘记了确切的标志)。它所做的是它删除了指出的 delta,而不管该 delta 何时实际引入 - 1 次提交或一年前。所以这是一个减法合并,可以用作回滚而不删除任何版本,有点“切掉”一些增量。

现在我使用 Perforce,我可以看到“回滚”命令,它允许创建一个更改列表,将“现在”的增量删除回我指定的更改列表。当您需要删除一些增量时,这就是 Perforce 知识库建议的方式。如果您需要删除一系列更改列表,您需要将整个更改列表的堆栈从“现在”回滚回前一个更改列表,然后将除您想要丢弃的更改列表之外的所有内容集成回来。所以 - 删除 N 个更改列表,然后整合回 N-1 个更改列表。我不知道......这对我来说似乎是一个开销。

所以我问有经验的Perforce用户,你知道如何在Perforce中做“减法积分”吗?

先感谢您。

4

3 回答 3

2

将 1001(使用 -i 标志忽略先前的集成历史记录)重新集成到分支 B,并从 1001 中获取所有更改,在分支 B 上创建 1007 更改列表。然后在此之上重新集成 1005 和 1006。除非 1005 和 1006 触及 1002-1004 中的一些变化,那么你可能不得不更加挑剔。

于 2011-11-01T19:41:47.730 回答
1

好像我错过了就在我眼前的关键 Perforce 功能......“Back Out Submitted Changelist #####”做了正确的事情。请参阅Perforce P4V 中的“回滚...”和“退出提交的更改列表#####”有什么区别

于 2011-11-08T04:58:30.480 回答
0

如果我这样做,我会在变更列表 1001 处基于分支 A 创建一个分支 C。然后我会将必要的额外工作从分支 A 和 B 拉到 C,当然,不会从 A 中拉出变更列表 1002。

于 2011-11-01T14:17:06.323 回答