Perforce p4变更实际上仅限于某些车辆段路径

Perforce p4变更实际上仅限于某些车辆段路径,perforce,Perforce,我想列出已将更改提交到某些站点路径的更改 p4 changes //depot/path/blah/... 不会正确地限制对给定仓库路径上发生的更改,但实际上会列出在视图路径等于或该路径的超集的工作空间上所做的更改,而不管实际更改的任何文件是否在相关路径中 e、 g.在包含以下路径之一上的视图的工作区中所做的更改: //depot/path/blah/... //depot/path/... //depot/... (可能还需要在其中一个路径上提交文件,我还没有测试该附加要求) 在//dep

我想列出已将更改提交到某些站点路径的更改

p4 changes //depot/path/blah/...
不会正确地限制对给定仓库路径上发生的更改,但实际上会列出在视图路径等于或该路径的超集的工作空间上所做的更改,而不管实际更改的任何文件是否在相关路径中

e、 g.在包含以下路径之一上的视图的工作区中所做的更改:

//depot/path/blah/...
//depot/path/...
//depot/...
(可能还需要在其中一个路径上提交文件,我还没有测试该附加要求)

在//depot/…上创建视图。。。可能很愚蠢,但如果有人这样做了,那么他们在//depot/OTHER-PATH/上的更改。。。将由

p4 changes //depot/path/blah/...
如何将p4更改限制为实际将文件提交到指定路径的更改

我可以读取p4更改的全部输出并运行: p4文件@=${change}|grep'^(…)' 哪里是一个正则表达式,用于匹配我传递给p4更改的所有仓库路径,以检测是否有任何文件实际位于相关仓库路径中

但是,双重检查所有输出似乎非常昂贵,perforce是否可以过滤或检查p4变化的输出

有趣的是,这里是一个完整的BASH代码段,$@是一个仓库路径列表(但没有对$@进行正确的输入健全性检查):


你描述的行为听起来是错误的。您正在运行哪个版本的服务器?你在清除仓库里的文件吗?您联系过Perforce技术支持吗?抹杀是一个线索。许多p4文件@=123456返回:@=123456-没有此类文件。我再也找不到错误路径的实例了,所以这些实例可能是我的错别字。可能所有错误返回的更改都被删除了如果“删除”导致“更改”报告错误的结果,那将是不幸的,可以说是“更改”中的错误。值得向Performance报告,以便他们将来能够修复它。
ifs_join() {  echo "$*" ; }

p4 changes -s submitted -i "$@" |
while read _1 change _rest ; do
      p4 files @=$change 2>&- | 
      egrep "^($(IFS='|' ifs_join "${@%%...}"))" >/dev/null && echo "$_1 $change $_rest"
done