web-dev-qa-db-ja.com

clearcaseブランチで変更されたファイルを見つける方法

私は自分のブランチの下にある多数のファイルを変更してチェックインしました。次に、変更したファイルのリストを取得する必要があります。そうするためのスクリプトはありますか?

19
sarat

cleartoolコマンドfind は、特定のブランチで少なくとも1つのバージョンを持つ要素(ファイル)を見つけるのに役立ちます。

以下はブランチ上のすべてのファイルを検索します

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

その他の例については、 find examples または " cleartool findコマンドの追加の例 "を参照してください。


OP sarath は以下を追加します:

@やその他の文字を含む不自由なファイル名が表示されます。通常のパスで取得できますか?

確かに、そのようなコマンドはあなたに(例として)のようなものを与えるでしょう:

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

パスのみを取得するには、2つの解決策があります。

1 /正しいブランチを持つ要素(バージョンではなく)を探す:

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

-ele-branchに置き換えてください)
それは与えるでしょう:

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

しかし、まだ「醜い」「@@」があります。

2/findと fmt_ccase format で見つかった要素を説明するexecディレクティブを組み合わせます。

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
26
VonC

Findコマンドが最適なソースです。 @@を使用して「不自由な」名前を戻し、その後すべてのブランチとバージョン情報を取得することに関するOPの懸念に対処するには、「-nxn」オプションを追加して、この情報を提供しないようにします。これは、出力をフォーマットするためにexecディレクティブと組み合わせて要素検索を行うよりもはるかに簡単です。

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

上記のコマンドは、特に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

(コピー/貼り付けの目的で1つの巨大な行に:)

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
6
Prathima

このコマンドを試してください

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

次のスクリプトを使用します

   #!/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からこれを使用します。

ありがとう、アミット

0
Amit Basak