synchronization - 奇怪的问题 Perforce 的 p4 同步没有捕捉到变化
问题描述
大家好,我急需帮助。
我的 p4 同步有一个奇怪的问题 /... 总是返回
- file(s) up-to-date.
大约 2 周前开始间歇性地发生这种情况,然后慢慢发展到 100% 无法正常工作,即 p4 同步不会产生任何变化。
如果我跑
p4 changes -m5
Enter password:
User <p4user> logged in.
Change 1523039 on 2019/09/19 by *********************************************online fix read me info'
Change 1523038 on 2019/09/19 by *********************************************config ids to Part'
Change 1523037 on 2019/09/19 by **********************************************pending* 'Created item-definition cache f'
Change 1523036 on 2019/09/19 by ********************************************* '<saved by Perforce> '
Change 1523035 on 2019/09/19 by ********************************************* '<saved by Perforce> '
Ran p4 sync /... 并获得了最新的文件响应。
我现在已经执行了几次以下步骤
- 光盘
- p4 同步 ...#0
- rm -rf *
- p4 同步 -f ...</li>
然后,这将成功同步所有文件。我将其用作我的自动构建管道的一部分,因此我可能不得不手动执行上述操作。
顺便说一句,我确实表演了
export P4CONFIG=~/.p4settings; /bin/p4 login < ~/.p4p; p4 workspace
并验证视图所有参数都可以。
我的构建管道已经工作了一年多。我不知道如何解决这个问题。非常感谢任何指针。
解决方案
比您的解决方法稍快的替代p4 sync -f
方法是p4 clean
. 与正常同步相比,这仍然相当慢,因为它需要对整个工作区进行校验和,但它至少比通过网络重新传输所有文件快一点。
至于找到并修复根本原因,以便您可以满怀信心地全速同步,这里有一些基本的事情需要预先检查:
- 什么
p4 have
显示为正在同步到工作区?是头部修订,还是修订旧? - 如果
p4 have
显示您有旧版本但p4 sync
不想更新它们,请检查p4 opened
- 请记住,它p4 sync
不会立即更新打开的文件(它会安排 aresolve
以便您可以合并更改)
我将继续假设p4 have
您已经有了头部修订,问题不在于文件是opened
.
- 您是否曾经使用
p4 sync -k
或p4 flush
强制更新拥有列表而不更新工作区?如果是这样,您的工作空间显然会在之后不一致;您可能不想使用这些命令。 - 您是否使用相同的客户端规范来同步多台机器?如果是这样,他们正在共享一个拥有列表,而不是物理工作区,因此您没有进行同步的机器将与拥有列表不一致。 不要跨多个工作区共享客户端规范。 客户端规范中的
Host
字段将帮助提醒您不要这样做,只要您不删除或覆盖它P4HOST
。
如果您不确定这些问题的答案,您可以检查服务器日志以查看此客户端规范已发出哪些命令。您可能还需要考虑将客户端规范设置为locked
以防止可能会破坏您的构建管道的恶作剧使用。
推荐阅读
- web-component - Web 组件的 disconnectedCallback 上删除事件侦听器的原因
- python - 在 Python 中获取字体字形的轮廓坐标
- git - 我不小心将 Repo1 的 Master 分支拉到本地并将 Remote 更改为 Repo2 并推送到特定分支。如何恢复这个?
- amazon-web-services - 在本地运行 Docker 内的 AWS Lambda
- javascript - 如何在 React Native 中使用相同的上下文来使用多个全局状态?
- c# - 从 XML 读取 Code 的值时出现问题
- go - 如何通过 grpcurl 发送时间戳?
- sass - 让 svelte-material-ui 与 snowpack 和 sass 一起使用
- amazon-web-services - 我想配置远程桌面
- php - {{-blocks 内的 Laravel Blade 指令