如何查找在clearcase分支下修改的文件

时间:2011-04-27 07:45:50

标签: version-control clearcase

我在我的分支下修改并签入了一堆文件。现在我需要获取我修改过的文件列表。是否有任何脚本可以这样做?

5 个答案:

答案 0 :(得分:24)

cleartool command find应该可以帮助您找到在给定分支上至少有一个版本的任何元素(文件)。

  

以下内容将找到分支上的所有文件

cleartool find . -type f -branch "brtype(mybranch)" -print

有关更多示例,请参阅find examples或“Additional examples of the cleartool find command”。


OP sarath添加:

  

它给了我一个带有@和其他字符的残缺文件名。是否有可能获得正常的路径?

是的,这样的命令可以给你类似的东西(例如):

.\.checkstyle@@\main\MyBranch
.\.classpath@@\main\MyBranch_Int\MyBranch
.\.classycle@@\main\MyBranch_Int\MyBranch
.\.fbprefs@@\main\MyBranch_Int\MyBranch

要获得唯一的路径,您有两种解决方案:

1 /使用正确的分支查找元素(而不是版本):

cleartool find . -type f -ele "brtype(mybranch)" -print

(请注意-ele替换-branch
这会给:

.\.checkstyle@@
.\.classpath@@
.\.classycle@@
.\.fbprefs@@
.\.pmd@@

但你仍然有“丑陋”的“@@”。

2 /将find与exec指令结合起来,该指令描述了fmt_ccase format找到的元素:

cleartool find . -type f -ele "brtype(mybranch)" -exec "cleartool descr -fmt \"%En\n\" \"%CLEARCASE_PN%\""

多行表格以便于阅读:

cleartool find . -type f -ele "brtype(mybranch)" \
  -exec "cleartool descr -fmt \"%En\n\" \"%CLEARCASE_PN%\""

请注意,所有“内部”双引号都需要转义。

%En将为您提供找到的元素的名称。

.\.checkstyle
.\.classpath
.\.classycle
.\.fbprefs
.\.pmd
.\.project
.\.settings\dico.txt

答案 1 :(得分:8)

find命令是最好的来源。为解决OP关于使用@@以及之后的所有分支和版本信息返回“残缺”名称的问题,可以添加“-nxn”选项以不提供此信息。使用与exec指令结合的元素搜索来格式化输出要容易得多。

cleartool find . -type f -branch "brtype(mybranch)" -nxn -print

答案 2 :(得分:6)

上述命令将提供特别是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 \nName\t\t:\040%En\nResponsible\t:\040%u\nDate\t\t:\040%d\nComment\t\t:\040%c\n %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 \nName\t\t:\040%En\nResponsible\t:\040%u\nDate\t\t:\040%d\nComment\t\t:\040%c\n %CLEARCASE_XPN%" -print >> D:\test.xls

答案 3 :(得分:1)

尝试此命令

cleartool find -avo -nxname -element '{brtype(branch_name)}' -print

答案 4 :(得分:0)

使用以下脚本

   #!/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中使用此文件。

谢谢, 阿米特