我修改并签入了分支下的一堆文件。现在我需要得到我修改过的文件列表。有这样的脚本吗?
cleartool命令find
应该帮助您找到在给定分支上至少具有一个版本的任何元素(文件)。
下面的命令将查找分支
上的所有文件
cleartool find . -type f -branch "brtype(mybranch)" -print
请参阅查找示例或" cleartool查找命令的附加示例"以获取更多示例。
OP sarath添加:
给了我一个带有@和其他字符的残缺的文件名。有可能得到正常的路径吗?
True,这样的命令会给你类似(作为一个例子):
..checkstyle@@mainMyBranch
..classpath@@mainMyBranch_IntMyBranch
..classycle@@mainMyBranch_IntMyBranch
..fbprefs@@mainMyBranch_IntMyBranch
要只获得路径,您有两个解决方案:
1/查找具有正确分支的元素(而不是版本):
cleartool find . -type f -ele "brtype(mybranch)" -print
(注意-ele
代替-branch
)
这将得到:
..checkstyle@@
..classpath@@
..classycle@@
..fbprefs@@
..pmd@@
但你仍然有"丑陋的"' @@
'。
2/将查找与exec指令结合,exec指令描述以fmt_ccase
格式找到的元素:
cleartool find . -type f -ele "brtype(mybranch)" -exec "cleartool descr -fmt "%Enn" "%CLEARCASE_PN%""
多行格式:
cleartool find . -type f -ele "brtype(mybranch)"
-exec "cleartool descr -fmt "%Enn" "%CLEARCASE_PN%""
请注意,所有的"内部"双引号都需要转义。
%En
将给出找到的元素的名称。
..checkstyle
..classpath
..classycle
..fbprefs
..pmd
..project
..settingsdico.txt
find命令是最好的源代码。为了解决OPs对返回带有@@的"残缺"名称以及随后的所有分支和版本信息的担忧,可以添加"-nxn"选项以不提供此信息。这比将元素搜索与exec指令结合起来格式化输出要容易得多。
cleartool find . -type f -branch "brtype(mybranch)" -nxn -print
上面的命令将给出所有被修改的文件,特别是branch(myBranch)
。
但是,如果要查找特定用户在特定日期修改的文件,则需要使用以下命令:
cleartool find . -version "{created_since(28-APRIL-2011.23:00:00)
&& (!created_since(29-APRIl-2011.23:00:00))
&& brtype(BR_test)
&& created_by(p723029)}"
-exec "cleartool describe -fmt nNamett: 40%EnnResponsiblet: 40%unDatett: 40%dnCommenttt: 40%cn %CLEARCASE_XPN%"
-print >> D:test.xls
(用于复制/粘贴)
cleartool find . -version "{created_since(28-APRIL-2011.23:00:00) && (!created_since(29-APRIl-2011.23:00:00)) && brtype(BR_test) && created_by(p723029)}" -exec "cleartool describe -fmt nNamett: 40%EnnResponsiblet: 40%unDatett: 40%dnCommenttt: 40%cn %CLEARCASE_XPN%" -print >> D:test.xls
试试这个命令
cleartool find -avo -nxname -element '{brtype(branch_name)}' -print
使用以下脚本
#!/bin/sh
display()
{
echo "usage: $0 branchname -v vobs"
echo " branchname: optional, if absent uses the current view-name"
echo " -v vobs: optional, if absent uses default vob list"
}
if [ $# -gt 1 ]; then
if [ $1 == -v ]; then
branch=`basename $CLEARCASE_ROOT`
VOB_LIST=${@:2:($# - 1)}
elif [ $2 == -v ]; then
branch=$1
VOB_LIST=${@:3:($# - 2)}
else
display
exit 1
fi
else
VOB_LIST="/vobs/abc /vobs/def /vobs/ghi /vobs/jkl /vobs/mno"
if [ $# -eq 1 ]; then
if [ $1 == -h ]; then
display
exit 0
else
branch=$1
fi
else
branch=`basename $CLEARCASE_ROOT`
fi
fi
echo "Searching for files of branch <$branch> in following vobs:"
echo "$VOB_LIST"
echo "================================================================"
cleartool find $VOB_LIST -all -version "version(.../$branch/LATEST)" -print
将其保存在名为ctlsbr的文件中,并在您想要查找修改文件列表的vob中使用此命令。
谢谢,Amit