web-dev-qa-db-fra.com

Comment trouver les fichiers modifiés sous une branche clearcase

J'ai modifié et archivé plusieurs fichiers sous ma branche. Maintenant, je dois obtenir la liste des fichiers que j'ai modifiés. Y a-t-il des scripts pour le faire?

16
sarat

La commande cleartool find devrait vous aider à trouver tout élément (fichier) avec au moins une version sur une branche donnée.

Ce qui suit trouvera tous les fichiers sur une branche

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

Voir find examples ou " Autres exemples de la commande cleartool find " pour plus d'exemples.


Le OP sarath ajoute:

cela me donne un nom de fichier estropié avec @ et d'autres caractères. Est-il possible d'obtenir avec le chemin normal?

Certes, une telle commande vous donnerait quelque chose comme (à titre d'exemple):

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

Pour obtenir uniquement le chemin, vous avez deux solutions:

1/chercher des éléments (et non des versions) avec la bonne branche:

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

(notez le -ele remplaçant le -branch)
Cela donnerait:

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

Mais vous avez toujours le "laid" '@@'.

2/combinez la recherche avec une directive exec décrivant l’élément trouvé avec fmt_ccase format :

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

Formulaire multiligne pour la lisibilité:

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

Veuillez noter que toutes les guillemets doubles "internes" doivent être évités.

Le %En vous donnera le nom de l'élément trouvé.

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

La commande find est la meilleure source. Pour répondre aux préoccupations des PO concernant le retour d'un nom "estropié" avec @@ et toutes les informations de branche et de version ultérieurement, l'option "-nxn" peut être ajoutée pour ne pas fournir ces informations. C'est beaucoup plus facile que de faire la recherche d'éléments combinée à la directive exec pour formater la sortie.

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

La commande ci-dessus donnera tous les fichiers modifiés en particulier branch(myBranch).
Mais si vous voulez trouver les fichiers modifiés par un utilisateur particulier avec une date particulière, vous aurez besoin de la commande suivante:

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

(dans une ligne géante à des fins de copier/coller :)

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

essayez cette commande

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

Utilisez le script suivant

   #!/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

Enregistrez ceci dans un fichier nommé ctlsbr et utilisez-le à partir du vob que vous voulez trouver dans la liste des fichiers modifiés.

Merci, Amit

0
Amit Basak