多年来我使用过许多版本控制系统,可以说我已经掌握了 SVN 和 Mercurial,但现在我有一份契约(Contract)要求我使用 perforce。我掌握了基本知识,但偶尔我会发现一个地方,我不清楚 perforce 到底在做什么。
上架变更就是其中之一。
本周我处于一种工作状态,我需要转移注意力并为某人快速解决问题。旧的工作是基于旧的修订,而对于新的工作,我需要最晚。所以我...
- 搁置了我当前的更改列表。
- 将我的工作区更新到最新版本
- 做我的工作
- 已提交。
- 取消搁置我的原始更改
当我取消搁置时,我知道我处于最新版本,但是“没关系,无论如何我都需要更新”。令我惊讶的是我不需要解析任何文件。不确定为什么会是我......
- 恢复了我的工作空间
- 更新到我最初工作的版本
- 再次取消搁置我的文件(我没有删除搁置的版本)
- 更新到最新版本
此时 perforce 要求我解析文件,这不是一个微不足道的解析(即不是一个可以自动完成的解析)。
这给我留下了疑问:
- 搁置只是复制一个文件,然后再复制回来吗?还是存储增量?
- 是否可以使用搁置来撤消其他人的更改?
- 以后遇到这种情况我该怎么办?
最佳答案
p4 搁置将您的文件保存在 Perforce 服务器上,但不会从您当前的工作区中删除您的未决更改。发出 p4 shelve 命令后,您可以发出 p4 revert 命令将您的工作区恢复到文件的未修改版本,但从您的描述来看,您似乎没有这样做。
因此,您对最新修订步骤 (p4 sync) 的更新将所有未打开的文件带到了 head 修订版,但将打开的文件保留在您搁置它们之前的状态。
您的取消搁置命令没有实际效果,因为文件已经处于您搁置它们之前的状态。
关于您的问题:
shelve 正在将文件(可能作为增量,但作为用户对我来说并不重要)复制到您(或您的同事)稍后可以获取它们的地方,但这并不是“挡路” ,"因为它不会自动还原您在本地工作区中搁置的更改
搁置本身不会更改 Perforce 中文件的主要版本;它更像是一个微型分支机构。但是,当您取消搁置文件时,您可能必须将在搁置文件之前所做的更改与文件被搁置后所做的更改相集成。如果您不小心,这可能会导致其他人所做的更改被撤销。
非常努力。
关于version-control - P4 货架 : What is actually saved?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16982913/