p4更改实际上限于某些库路径

时间:2014-10-06 09:57:21

标签: perforce

我想列出已对某些软件仓库路径进行更改的更改

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' ^(...)' where ...是一个正则表达式,用于匹配我传递给p4的所有库路径更改,以检测是否有任何文件实际位于相关的库路径中

但是必须仔细检查所有输出似乎非常昂贵,肯定perforce可以过滤或检查p4变化的输出吗?

感兴趣的是完整的BASH代码段,$ @是一个库路径列表(但没有对$ @进行适当的输入完整性检查):

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

0 个答案:

没有答案