清除 ClearCase 视图私有文件

4
有没有办法在CC动态视图中仅删除查看私有文件。 我的视图中有许多被遮蔽的文件和查看私有文件。 我需要仅删除查看私有文件并保留已签出和被遮蔽的文件。
我尝试了以下操作 -
cleartool ls -r | grep -v eclipsed | grep -v checkedout | xargs rm -v

但是看起来被 eclipsed 的文件在使用 cleartool ls 命令时会出现两次。因此,它也会删除被 eclipsed 的文件 :(

cleartool ls -r 在动态视图中对于一个被 eclipsed 的文件会产生两个输出。

src.mk
src.mk@@ [eclipsed]

因此,使用cleartool ls -rec | grep -v "Rule:" | grep -v "eclipsed" | grep -v "-->" | xargs rm -v命令删除文件时,也会删除被遮蔽的文件。


cleartool lsprivate 出了什么问题? - mouviciel
@mouviciel,这也应该可以工作。我已经将其添加到答案中了。 - VonC
@mouviciel,“cleartool lsprivate”也会列出被遮蔽的文件。 - Kamath
1个回答

3

你说得没错,这两种解决方案都不行:

 cleartool ls -rec | grep -v "Rule:" | grep -v "eclipsed" | grep -v "-->"  | xargs rm -v

清除命令:cleartool lsprivate | grep -v "eclipsed" | xargs rm -v

来源:我的旧回答在 "Command to find all view private files in the current directory recursively"。

lsprivate单独列出了所有私有文件,包括被遮蔽的文件:

M:\yourDynView\yourVob\aDir\>ct lsprivate

M:\yourDynView\yourVob\aDir\aFile.vsd
M:\yourDynView\yourVob\aDir\aPrivateFile

但是一个 lsprivate -l 列表会将文件重复列出两次:
M:\yourDynView\YourVob>ct lsprivate -long

view private object    M:\yourDynView\yourVob\aDir\aFile.vsd
file element           M:\yourDynView\yourVob\aDir\aFile.vsd@@ [eclipsed]
view private object    M:\yourDynView\yourVob\aDir\aPrivateFile

所以你需要三个步骤:
  • 第一步生成 cleartool lsprivate -l
  • 第二步删除包含eclipsed的行之上的任何行
  • 第三步读取该文件并删除文件中列出的其余私有文件
第二步可以采用以下方法(在此线程后进行了松散测试)
gawk "{if ((NR!=1)&&($0!~/eclipsed/)) {if ($lastlin!~/eclipsed/) {print astlin};lastlin=$0} } END{print lastlin} " s

使用's'来表示包含cleartool lsprivate -l结果的文件。


"cleartool ls -rec | grep -v "Rule:" | grep -v "eclipsed" | grep -v "-->" | xargs rm -v" 不起作用。我已更新上面的解释。 - Kamath
@LOK和我在答案中提到的cleartool lsprivate | grep -v "eclipsed" | xargs rm -v作为替代方案,这样做是否更好? - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接