执行p4 edit时报错‘file(s) not on client’的原因排查求助
本地文件未被Perforce客户端识别
你用ls看到的只是本地物理文件,但Perforce没把它纳入版本控制映射。哪怕客户端视图包含对应仓库路径,只有通过p4 sync从仓库同步、或p4 add添加到客户端的文件,Perforce才会将其关联到客户端映射路径。手动复制到本地的文件,Perforce不会自动识别它属于当前客户端的映射范围。客户端视图映射的实际路径不匹配
虽然你说视图是//WORLD/... //client/...,但得确认本地目录对应的客户端路径是否正确。执行p4 where thefile命令,看文件的本地路径是否映射到仓库的//WORLD/...路径下。如果p4 where结果显示文件不在客户端映射范围内,说明本地目录和客户端视图的映射有偏差——比如你当前所在的本地目录并非客户端视图中//client/...对应的物理路径,或是文件的本地路径和视图映射的路径结构不匹配。客户端工作区的根目录设置问题
检查客户端根目录(用p4 client查看Root字段),确保你当前操作的目录在客户端根目录之下。如果终端所在路径超出客户端根目录范围,哪怕物理文件存在,Perforce也会认为它不属于当前客户端。文件的仓库路径未被视图覆盖
确认文件对应的仓库路径确实在//WORLD/...之下。比如文件实际在仓库的//OTHER/...路径下,而你的客户端视图只映射了//WORLD/...,那即便本地有这个文件,Perforce也无法将它和当前客户端视图关联,从而报错“not on client”。可以通过P4V查看文件的仓库路径,对比客户端视图是否包含该路径。Perforce客户端的缓存或状态异常
有时Perforce客户端的本地状态缓存会出异常,导致无法正确识别本地文件。可以试试执行p4 flush刷新客户端状态,或者重新登录(p4 logout后再p4 login),之后再尝试p4 edit。
内容的提问来源于stack exchange,提问作者cardiff space man

