perforce - 是否有可能从一个变更列表中减去另一个变更列表的变更?

标签 perforce p4v changelist

假设我有两个变更列表 A 和 B(位于 A 之上)。
现在,我只想要 B 中所做的更改,而不是 A 中包含的更改,即 B-A
可以这样做吗?

最佳答案

是的。做:

p4 undo @A,A
p4 sync @B

这将创建一个新的待定更改列表,即“B 减去 A”。如果 A 和 B 接触了相同的文件,则同步到 @B 将需要解析将 B 的更改合并到文件中(没有 A 的更改)。合并的设置方式将使一切尽可能自动发生。

如果以后对同一文件进行了其他更改,您将需要同步解决这些更改,就像您在任何时候所做的那样正在处理旧的变更列表。

理论上这在 P4V 中也是可行的(我认为这是“退出”命令),但我对此有过不好的经历,因此不推荐它。从命令行非常简单。


示例

C:\Perforce\test\undo>p4 annotate -c foo
//stream/main/undo/foo#3 - edit change 137 (text)
135: this
136: is    **CHANGE A**
135: a
137: test  **CHANGE B**
135: file

更改 A 为 @136,更改 B 为 @137。

C:\Perforce\test\undo>p4 undo @136,136
//stream/main/undo/foo#2 - opened for integrate
... undid //stream/main/undo/foo#2

C:\Perforce\test\undo>p4 sync @137
//stream/main/undo/foo#3 - is opened and not being changed
... //stream/main/undo/foo - must resolve #3 before submitting

C:\Perforce\test\undo>p4 resolve -am
c:\Perforce\test\undo\foo - merging //stream/main/undo/foo#3
Diff chunks: 1 yours + 1 theirs + 0 both + 0 conflicting
//compy386/undo/foo - merge from //stream/main/undo/foo

C:\Perforce\test\undo>p4 submit -d "undid A"
Submitting change 138.
Locking 1 files ...
integrate //stream/main/undo/foo#4
Change 138 submitted.

更改 136 现已被更改 138 撤消:

C:\Perforce\test\undo>p4 annotate -c foo
//stream/main/undo/foo#4 - integrate change 138 (text)
135: this
138: is
135: a
137: test  **CHANGE B**
135: file

C:\Perforce\test\undo>p4 filelog foo
//stream/main/undo/foo
... #4 change 138 integrate on 2020/02/08 by Samwise@compy386 (text) 'undid A'
... ... undid //stream/main/undo/foo#2
... #3 change 137 edit on 2020/02/08 by Samwise@compy386 (text) 'change B'
... #2 change 136 edit on 2020/02/08 by Samwise@compy386 (text) 'change A'
... ... undone by //stream/main/undo/foo#4
... #1 change 135 add on 2020/02/08 by Samwise@compy386 (text) 'test file'

关于perforce - 是否有可能从一个变更列表中减去另一个变更列表的变更?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60125732/

相关文章:

perforce - 如何从 perforce depot 中删除文件?

git - Git/IntelliJ 中的更改列表是什么以及如何摆脱它?

visual-studio-2008 - 本地提交推送到中央服务器

python - 在提交之前使用 Perforce 触发器更新文件

perforce - 强制重新应用变更列表

parallel-processing - 必须使用 net.parallel.max 启用并行文件传输

perforce - 如何在 p4v 中显示特定的更改列表编号?

java - 创建新的变更列表 Perforce Java API

perforce - 如何将 2 个挂起的更改列表与公共(public)文件合并

perforce - 强制恢复多次 checkin