5

Clearcase 中删除未修改元素的分支的命令是什么(该分支中元素的版本为“0”)?

4

2 回答 2

7

您可以简单地删除该元素的版本 0(我在此处详述)。

这将删除关联的分支。

cleartool rmver file@@/main/aBranch/0

您需要“ cleartool find”所有版本为 0(且没有版本 1)的元素,以及rmver那些版本为 0。
对于给定的分支,这将返回所有要删除的版本:

cleartool find -type f -version "version(.../blah/LATEST)&&version(.../blah/0)" -print

您可以将其与 exec 指令结合使用:

# on Windows:
cleartool find ... -exec "cleartool rmver --force \"%CLEARCASE_XPN%\"
# on Unix:
cleartool find ... -exec 'cleartool rmver --force "$CLEARCASE_XPN\"'

小心rmver,这是一个破坏性操作,所以在执行完整find -exec rmver命令之前请仔细测试!


George F. Frazier的“ Purging Zero-Version-Only Elements in ClearCase ”一文中提到了另一种方法:

你需要清除你对那些麻烦实体的看法。
运行以下命令以查找所有零版本元素:

cleartool find -avobs -branch'{
    brtype(mybranch)&&!
    (version(.../mybranch/1))}' 
     -print > c:\files.txt 

这将找到所有没有版本 1 的元素mybranch(如果您仔细阅读,您会注意到如果您删除了已经具有大于或等于 2 版本的元素的 1 版本,它不会做正确的事情 - 这是不过这种情况很少见)。
完成后,只需使用rmbranch核对元素(确保你知道你在这里做什么!)。
有很多方法可以做到这一点;因为我运行 MKS 工具包,所以我从命令窗口执行以下命令:

cleartool rmbranch -f 'cat c:\files.txt' 

Tamir 建议使用触发器来自动删除版本 0 ,如IBM Rational ClearCase: The Ten Best triggers中列出的,在Empty Branch部分下。

cleartool mktrtype -c "Automatically remove empty branch" -element -all -postop uncheckout -execwin "ccperl \\mw-ddiebolt\triggers\test_empty_branch.bat" REMOVE_EMPTY_BRANCH

这对于将来撤消签出留下版本 0 的情况很有用。

于 2013-08-12T09:43:28.727 回答
2

rmver won't work.

/home/ccadmin $ cleartool rmver -force ./VaREngine/Makefile@@/main/nz_mig/nz_relOne/0 cleartool: Error: Cannot delete version zero without deleting branch: "./VaREngine/Makefile".

于 2013-10-15T17:57:30.493 回答