我是使用clearcase的新手。我有一个关于这个的任务。
我在unix中有一个名为Files.txt的文件,其中包含目录路径列表。
示例:Files.txt
/a/b/c/d
/e/f/g/
i/j/k/l/m/n
我想知道,如果Files.txt中列出的目录是否已签出。有人可以帮助我使用shell脚本(如果有办法,我不确定)来查找是否检出Files.txt中列出的目录。
我在unix命令行中试过这个,
命令:ct des d
输出:
directory version "d/@@/main/0"
created 2008-07-09T07:18:26+05:30 by Anna (anna1.dummy@abc)
Element Protection:
User : anna : rwx
Group: dummy : rwx
Other: : r-x
element type: directory
这样,对于Files.txt,我很难通过“ct des directory_name”的输出解析Files.txt中列出的每个目录,并检查列出的所有目录是否都已检出,因为Files.txt包含100多个目录路径。 有没有一种简单的方法可以检查Files.txt中的目录是否结帐?
答案 0 :(得分:2)
你需要遍历File.txt的每一行,并为CHECKEDOUT
每一行描述和grep。
#!/bin/sh
lines=$(cat Files.txt)
while read -r line; do
# do your descr there
cleartool descr -l ${line}|grep CHECKEDOUT
done <<< "${lines}
另一种方法是查找所有结帐文件夹,并为每个文件夹点击Files.txt
。
cleartool find . -type d -exec 'cleartool describe -fmt "%En %Rf\n" "$CLEARCASE_PN"' | grep "CHECKEDOUT"
答案 1 :(得分:0)
假设您使用PowerShell脚本,那么这种方式最容易找到文件是否结帐。
(cleartool ls -short "<FileFullPath>").EndsWith("CHECKEDOUT")
如果是结帐,它将返回true。
对于文件夹,它有点不同,如下所示
(cleartool lscheckout -d "<FolderPath>").Length -gt 0
如果返回true,则文件夹结帐。如果文件夹没有签出,则没有输出字符串,因此长度将为零,命令将返回false。