ClearCase中,如果想要删除一个版本化的文件或者目录(文件和目录都是element),有两个可选的命令,即rmname和rmelem。rmelem命令用于将一个element从VOB中彻底删除,是比较“暴力”的,需要很谨慎的。rmname则是删element所在某个版本目录的目录项。这个命令的说明对其进行了详细的说明,可以通过cleartool man rmname查看到。本文主要翻译其中的描述(Description)部分,如下:
默认情况下,只有在目录checkout后且要删除名称的element没有checkout,这样,这个element的名称才可以删除。rmname会在目录的checkout评论(comment)中添加了一行说明。
通过去除element的名字或VOB的软链接(采用UNIX和Linux unlink的系统调用),rmname可以改变一个或多个checkout的目录。目录的老版本不会发生改变;删除的名称依然存在于老版本目录中。
从checkin的目录版本中去除一个名字,可以使用-nco的选项。例如,去除一个指向已经删除的文件的软链接。
在snapshot view中,这个命令隐式执行element的更新(update)操作。
例如:假设,检出(check out)一个目录(名字为 a.dir)的3号版本。只有当前检出的view可以看到这个版本 。rmname foo.c命令从checkout的目录中删除名称foo.c,但是在之前版本中留下了 foo.c的引用。当checkin目录后,所有view都可以访问版本4目录,该目录不包含foo.c。
必须注意的是:
* rmname不会删除element本身,而删除element的引用。采用rmelem(要非常小心)删除VOB里element及其名字; * 删除最后一次element的引用会孤立element。这样的element会被移入VOB中的lost+found目录中;
* 去除VOB软链接的最后一次引用作用效果不一样。这取决于VOB是否存在副本;
* 如果VOB不存在副本,链接会被删除;
* 如果VOB有副本存在,这个链接会被移入VOB的lost+found目录中。
取消rmname操作
为了恢复采用rmname命令删除的element的目录项,可以用ln命令建立VOB的任何前一个目录版本中element的硬链接(hard link)。例如:
cmd-context checkout src | Checkout parent directory
--------------------------------------------------------------------------+-------------------------------
cmd-context rmname src/msg.c | Oops!
-----------------------------------------------------------------------------+-------------------------------
cmd-context ln src@@/main/LATEST/msg.c src/msg.c | Restore deleted name
如果任何之前版本目录中都没有所要恢复的element的目录项,这就意味着这个element被孤立了,就是,被移入了lost+found目录了。可以用cleartool mv命令将这个element移到恰当的位置 (不能使用ln命令建立lost+found中element的链接)。
用户
在VOB检出后,执行这个命令不需要特殊权限,可以参考checkout的命令说明。对应-nco选项,必须是下面的身份之一:
* VOB的拥有者
* root (UNIX and Linux)
* ClearCase管理组的成员 ( Windows下的ClearCase)
默认情况下,只有在目录checkout后且要删除名称的element没有checkout,这样,这个element的名称才可以删除。rmname会在目录的checkout评论(comment)中添加了一行说明。
通过去除element的名字或VOB的软链接(采用UNIX和Linux unlink的系统调用),rmname可以改变一个或多个checkout的目录。目录的老版本不会发生改变;删除的名称依然存在于老版本目录中。
从checkin的目录版本中去除一个名字,可以使用-nco的选项。例如,去除一个指向已经删除的文件的软链接。
在snapshot view中,这个命令隐式执行element的更新(update)操作。
例如:假设,检出(check out)一个目录(名字为 a.dir)的3号版本。只有当前检出的view可以看到这个版本 。rmname foo.c命令从checkout的目录中删除名称foo.c,但是在之前版本中留下了 foo.c的引用。当checkin目录后,所有view都可以访问版本4目录,该目录不包含foo.c。
必须注意的是:
* rmname不会删除element本身,而删除element的引用。采用rmelem(要非常小心)删除VOB里element及其名字; * 删除最后一次element的引用会孤立element。这样的element会被移入VOB中的lost+found目录中;
* 去除VOB软链接的最后一次引用作用效果不一样。这取决于VOB是否存在副本;
* 如果VOB不存在副本,链接会被删除;
* 如果VOB有副本存在,这个链接会被移入VOB的lost+found目录中。
取消rmname操作
为了恢复采用rmname命令删除的element的目录项,可以用ln命令建立VOB的任何前一个目录版本中element的硬链接(hard link)。例如:
cmd-context checkout src | Checkout parent directory
--------------------------------------------------------------------------+-------------------------------
cmd-context rmname src/msg.c | Oops!
-----------------------------------------------------------------------------+-------------------------------
cmd-context ln src@@/main/LATEST/msg.c src/msg.c | Restore deleted name
如果任何之前版本目录中都没有所要恢复的element的目录项,这就意味着这个element被孤立了,就是,被移入了lost+found目录了。可以用cleartool mv命令将这个element移到恰当的位置 (不能使用ln命令建立lost+found中element的链接)。
用户
在VOB检出后,执行这个命令不需要特殊权限,可以参考checkout的命令说明。对应-nco选项,必须是下面的身份之一:
* VOB的拥有者
* root (UNIX and Linux)
* ClearCase管理组的成员 ( Windows下的ClearCase)