我正在查找命令行以从Windows上的ClearCase视图中删除所有视图 - 私有文件和目录。我也有Cygwin。删除所有ClearCase视图 - 私有文件的命令行
在this article可用的脚本是不是我想要的,因为我正在处理大量的文件,并希望全部删除它们而不必选择每个文件。
我正在查找命令行以从Windows上的ClearCase视图中删除所有视图 - 私有文件和目录。我也有Cygwin。删除所有ClearCase视图 - 私有文件的命令行
在this article可用的脚本是不是我想要的,因为我正在处理大量的文件,并希望全部删除它们而不必选择每个文件。
我一直使用:
ct lsprivate | xargs rm
我也是这样,我需要运行'ct lsco -cvi -s -avo'来找到任何签出的文件,并在取消私人文件之前取消这些签出。 – 2008-12-28 16:56:10
有没有想过为什么一个4岁的职位会突然吸引downvote而没有解释为什么它被低估?我做。 – 2012-06-08 15:12:34
在这种情况下,它确实让我感到困惑,幸运的是,当它发生的时候相当罕见。它也很刺激,但我认为没有什么值得我对不明原因的驾驶型选票进行反对,除非有人以我的投票为目标(这还没有发生)。 – 2012-06-08 15:22:45
我结束了在Cygwin中使用这个命令:
cleartool ls -recurse -view_only | sed -e 's:\\:/:g' | xargs rm -r
战略经济对话是必要cleartool更改Windows风格的路径输出到Unix的风格的路径。那里可能有更高效的命令。这一个会抛出很多错误,因为它会删除目录,然后rm找不到该目录下的任何先前找到的视图 - 私有文件。但最终你会得到正确的结果。
编辑:VonC指出,这种只适用于动态ClearCase视图
关于使用cygpath命令,而不是sed的什么原理?
你可以在这里找到更多关于cygpath.exe:
link text
的方式与其他程序链接cygpath.exe是使用xargs的。
例如:processA | xargs的cygpath -u>我的路径功能于UNIX的format.txt
一个几句话:
ct lsprivate
是伟大的动态看法,并不快照视图ct ls -rec -view_only
以及ct lsprivate
还列表您的签出文件...我不确定你想删除这些...对于列出私人文件(只有私人文件,没有被劫持的人,你可能想保留),你需要有一个命令:
(奖金)不依赖于外部的shell命令
for /F "usebackq delims=" %i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%i"
,列出所有的Y我们的私有文件(以绝对Windows方式(不需要外部的shell依赖关系)跳过被劫持/重叠/检出或非私有文件以及符号链接)。
替换@echo "%i"
由del /F "%i"
他们走了。
请注意%i周围的双引号,以正确显示/删除名称中包含空格的文件。 还要注意缺少cleartool参数-nxn,因为符号链接否则会无法区分,并且无论如何都不会装饰视图 - 私有文件。
为了也摆脱私人目录,首先运行命令与rmdir /S /Q "%i"
然后del /F "%i"
。
我知道有可能是一个更好的方式,但我似乎总是回到这一个:
ct lspriv | grep -v checkedout | xargs rm -rf
在Unix(动态视图),一个非常有效的技术去除视图私人文件被降风景。首先保留cspec。还要确保视图中没有结帐。然后删除它并重新创建一个新的(在创建它们之前,名称相同,cspec相同,存储空间相同,但没有私有文件)。
# With the view to be cleaned as your current view...
ct pwv -s > /tmp/viewname
viewname=$(</tmp/viewname)
ct catcs > /tmp/$viewname.cs
ct lsview -cvi | awk '{print $3;}' > /tmp/$viewname.vws
# The next line is the first dangerous line!
# It cancels all outstanding checkouts and removes the modified files
ct lsco -cvi -s -avo 2>/dev/null | xargs ct unco -rm # Or: xargs ct ci -nc
exit # Terminate the session in the view
viewname=$(</tmp/viewname)
rm /tmp/viewname
# The next line is the second dangerous line
ct rmview -tag $viewname
ct mkview -tag $viewname $(</tmp/$viewname.vws)
ct setcs -tag $viewname /tmp/$viewname.cs
rm /tmp/$viewname.cs
所有视图私人文件都没有了 - 而且你已经最小化了你的磁盘使用情况。
如果您足够幸运只能使用一个VOB,您可以省略'-avo
'(所有VOB)选项。 '2>/dev/null
'重定向失去了来自不可访问的VOB的错误 - 除了我真正使用的十几个可访问的VOB之外,我的环境中有超过100个可见但不可访问的VOB。
请注意,如果您打包为'rebuild.view
'脚本,您需要将视图名称作为参数(从视图之外进行工作 - 它不会是当前视图),然后您可以执行清理在视图内部,使用不同的'lsview'选项来获取所需的细节,并且通常远离/ tmp中的临时存储(尽管您需要在某处缓存cspec)。
还有一点需要注意 - 您希望确保您在自动松动之前完成了手动清理。例如,应该没有结帐。或者,如果有任何结账,写脚本拒绝放弃视图。
在纯粹的Windows,你可以这样做:
for /F "delims=" %i IN ('ct lsprivate') DO rm -rf "%i"
从CLI列出私人文件执行下面的命令
for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do @echo "%i"
从下面COMAND执行的CLI视图删除查看私人文件
for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do del /F "%i"
同步与项目的看法:
从项目资源管理器中选择流属性,进入查看选项卡,选择视图属性,然后单击
在windows下DOS“与项目同步”提示:
for /f "delims=" %f in ('cleartool lspriv -s -do -oth ^| sort /r') do @del /f /q "%f"
刚刚添加了一个更通用的命令行。如果您有任何问题,我会在明天早上回顾您的意见/问题。 – VonC 2008-12-15 22:47:14