2009-10-16 63 views
6

我想知道在尝试删除已提交的更改列表时可能会发生什么,因为已提交的更改列表不应该是空的。如何快速查找/删除Perforce中的所有空白更改列表?

但是后来我正在使用教程库,并且在整个分支上使用了obliterate命令,我可以看到有些情况下,您最终可能会得到空的已提交更改列表(需要使用-f标志删除)。

但是,我不知道如何使用命令行找到它们,因为我不知道如何查找没有关联文件的更改列表。

有没有简单的方法来做到这一点?

感谢,

托马斯

回答

0

由于我在Windows上,我创建了一个小脚本做同样的事情在PERL,而不是壳牌,PowerShell的或PX :):

#******************************************************************************* 
# Module: delete_empty_changelist.pl 
# Purpose: A script to delete empty changelist 
# 

@list = `p4 changes -s submitted`; 

foreach $chg (@list) 
{ 
$chgnbr = (split /\s+/, $chg)[1]; 
print `p4 change -d -f $chgnbr`; 
}  
exit 0; 

注意,实际上,在任何情况下,它都不是一个非常聪明的脚本:它试图绝对删除每个提交的更改列表,并且perforce会阻止它执行此操作,因为如果文件与它关联,则会出现错误。

我想脚本的结果应该发送到日志,并解析,以便只有相关的行被突出显示。

运行脚本会产生类似的输出:

Change 857 has 1 files associated with it and can't be deleted. 
Change 856 has 1 fixes associated with it and can't be deleted. 
Change 855 has 1 fixes associated with it and can't be deleted. 
Change 854 deleted. 
Change 853 has 1 fixes associated with it and can't be deleted. 
Change 852 has 8 files associated with it and can't be deleted. 
Change 851 has 1 files associated with it and can't be deleted. 
Change 850 has 2 files associated with it and can't be deleted. 
Change 849 has 2 files associated with it and can't be deleted. 
Change 846 deleted. 
Change 845 has 2 files associated with it and can't be deleted. 

干杯,

托马斯

6

啊!

我应该问在此之前已经浏览更多的文档......

http://public.perforce.com/wiki/Perforce_Command_Line_Recipes

说明:删除所有空提交变更表。
Shell命令:p4 changes -s submitted | cut -d“”-f 2 | xargs -n1 p4更改-d -f
Powershell:p4更改-s提交| %{p4 change -d -f $ _。split()[1]}
px:px -F%change%changes -s submitted |山姆斯塔福德,菲利普·卡尼亚,肖恩Hladky

咄:PX -X- -f
提供者更改-d。

托马斯

+0

您应该接受您自己的答案(将问题标记为已回答)。 :-) – PhiLho 2009-10-16 14:00:29

+0

我无法在Windows PC上使用建议的答案,所以我写了一个小的PERL脚本来做同样的事情。 :-) – 2009-10-16 14:55:11

0

这里是一个只有DOS CMD版本。只需替换%p4streamsUser%。

for /f "tokens=* delims=" %%i in ('p4 changes -u %p4streamsUser% -s pending') do (
     for /f "tokens=1-7*" %%a in ("%%i") do (
      echo Deleting CL %%b %%h %%f 
      p4 change -d -f %%b 
     ) 
    ) 

我在Windows 7机器上。这将适用于其他几个版本的Windows/DOS。

1

要简单找到所有空提交变更表,但不删除它们,你可以比较这两个命令的输出:

  • p4 changes -s submitted - 所有变更列表
  • p4 changes -s submitted //... - 与相关文件的所有变更表

在Windows PowerShell中,例如,运行

diff -ReferenceObject (p4 changes -s submitted) -DifferenceObject (p4 changes -s submitted //...) 
+0

好戏!谢谢 ! :) – 2015-10-07 17:01:38

相关问题