gpt4 book ai didi

synchronization - 使用 perforcesync -p 选项有什么优点?

转载 作者:行者123 更新时间:2023-12-02 21:06:47 24 4
gpt4 key购买 nike

我读了documentation ,它是这样说的:-

Populate a client workspace, but do not update the have list. Any file that is already synced or opened is bypassed with a warning message. This option is typically used for workspaces used in processes (such as certain build or publication environments) where there is no need to track the state of the workspace after it has first been synced.

但我不太明白这样做的优点(或缺点)。

最佳答案

下面是一个有用的示例:您有一个构建场(例如 10 个构建服务器);这 10 台服务器是克隆:每台服务器都安装了相同的软件,每台服务器都可以构建您的项目,并且每台服务器都在相同的本地路径(例如 C:\buildServer\projectFoo\)上构建您的项目。为了节省维护成本,您创建一个单个 P4 客户端(我们称之为 clientFoo),而不是 10 个客户端(每个构建服务器一个)。您可以在所有 10 个构建服务器上使用它,因为 clientFooHost 未指定(在客户端设置中)。显然,clientFoo 将您的仓库路径映射到 C:\buildServer\projectFoo\,它适用于您的所有 10 个构建盒。

现在假设您的构建服务器使用 p4sync 而不是 p4sync -p。首先,构建服务器 A 将调用 p4sync 并在本地文件系统上获取 Foo 项目。好的。但是,由于它没有使用 -p,它还更新了 Perforce 服务器,该服务器现在认为 Foo 项目已同步到 clientFoo 中的最新版本。如果构建服务器 A 再次同步 Foo,它将获得增量同步。还好。然而,如果客户端 B 接下来同步 Foo,它也将获得增量同步,即它只会同步几个文件,甚至什么也不同步(如果自 A 同步 Foo 以来没有文件被修改)。这是错误的,因为 B 还没有任何 Foo 信息!增量同步是没有意义的。

解决方案是构建服务器 B 调用 p4sync -f:即忽略“have”表(即忽略 Perforce 服务器认为 clientFoo已经有)并强制完全同步。这当然是可行的:所有 10 个构建框都可以调用 p4sync -f 来解决不需要的增量同步问题。但是每个p4sync -f仍然会更新Perforce服务器的“have”表,这是浪费的,因为我们从不使用它(我们总是通过使用-f来忽略它)。因此,为了避免徒劳地维护“have”表,我们可以从所有构建服务器调用 p4sync -p 并且永远不更新“have”表。

关于synchronization - 使用 perforcesync -p 选项有什么优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com