You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git p4 submit提交时出现目录重复、路径翻倍异常问题求助

问题根因

1. 路径映射逻辑冲突

你执行git p4 clone时直接拉取了整个taskstream流根,而你的stream配置仅将dira/dirb/...设为共享路径,拉取到的Git仓库根目录下直接包含dira/dirb/层级。同时你的Perforce工作区映射规则是将流内的dira/dirb/...映射到本地工作区的dira/dirb/...路径,提交时Git侧的dira/dirb/xxx会被拼接在工作区映射的dira/dirb/前缀后,最终生成dira/dirb/dira/dirb/xxx的重复路径。

2. Git p4参数配置缺失

你没有给git p4指定--use-client-spec参数,git p4不会主动复用你本地Perforce工作区的路径映射规则,会默认按照depot的全路径层级处理提交路径。

3. 配置拼写错误

你执行clone时填写的depot路径//substream/taskstream和实际的stream路径//streambase/taskstream不一致,同时工作区映射规则里的buildbode为拼写错误(应为buildcode),也会引发路径解析异常。

排查步骤
  • 执行ls查看当前Git仓库的根目录结构,确认根目录下是否直接存在dira目录,而非Git根目录就是dira/dirb下的业务文件
  • 执行git config -l | grep git-p4查看git p4的相关配置,确认是否开启了客户端规则适配
  • 执行p4 where //substream_workspace/dira/dirb/test.txt测试路径映射,看输出的depot路径是否为//streambase/taskstream/dira/dirb/test.txt,验证工作区映射是否正常
  • 检查工作区映射规则的拼写,修正buildbode为buildcode
修复方案

临时修复当前异常提交

  • 执行p4 revert //substream_workspace/...撤销当前异常的变更列表
  • 手动将Git侧dira/dirb下的所有文件移动到Git仓库根目录,删除空的dira目录后再执行git p4 submit

永久修复同步配置

  1. 重新初始化git p4同步仓库,拉取时指定精确路径并开启客户端规则:
# 清空原有Git目录,重新执行clone
git p4 clone --use-client-spec //streambase/taskstream/dira/dirb/... ./

拉取完成后Git根目录直接是dira/dirb下的所有文件,不会多一层dira/dirb前缀。
2. 给当前Git仓库配置永久复用客户端规则,避免后续提交路径异常:

git config git-p4.useClientSpec true
  1. 验证提交:新增一个测试文件到Git根目录,执行git p4 submit --prepare-p4-only查看变更列表的路径是否符合预期,确认没有重复层级后再正式提交。

内容的提问来源于stack exchange,提问作者MikeS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 03:12:01