20 Stimmen

Wie findet man die Dateien, die unter einem clearcase-Zweig geändert wurden?

Ich habe eine Reihe von Dateien in meinem Zweig geändert und eingecheckt. Jetzt muss ich die Liste der von mir geänderten Dateien abrufen. Gibt es Skripte, die das ermöglichen?

29voto

VonC Punkte 1117238

Le site Cleartool-Befehl find sollte Ihnen helfen, jedes Element (Datei) mit mindestens einer Version in einem bestimmten Zweig zu finden.

So finden Sie alle Dateien in einem Zweig

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

参照 Beispiele finden oder " Weitere Beispiele für den Befehl cleartool find " für weitere Beispiele.


Le site OP sarath fügt hinzu:

erhalte ich einen verkrüppelten Dateinamen mit @ und anderen Zeichen. Ist es möglich, einen normalen Pfad zu verwenden?

Richtig, ein solcher Befehl würde Ihnen etwas geben wie (als Beispiel):

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

Um nur den Pfad zu erhalten, haben Sie zwei Möglichkeiten:

1/ suchen Sie nach Elementen (und nicht nach Versionen) mit dem richtigen Zweig:

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

(Beachten Sie die -ele Ersetzen der -branch )
Das würde bedeuten:

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

Aber Sie haben immer noch die "hässlichen" ' @@ '.

2/ kombinieren Sie die Suche mit einer exec-Anweisung, die das gefundene Element mit fmt_ccase Format :

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

Mehrzeiliges Formular für bessere Lesbarkeit:

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

Bitte beachten Sie, dass alle "inneren" doppelten Anführungszeichen maskiert werden müssen.

Le site %En gibt Ihnen den Namen des gefundenen Elements.

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

9voto

JD D Punkte 6350

Der Befehl find ist die beste Quelle. Um die Bedenken des Auftraggebers zu zerstreuen, einen "verkrüppelten" Namen mit @@ und alle Zweig- und Versionsinformationen zurückzubekommen, kann die Option "-nxn" hinzugefügt werden, um diese Informationen nicht zu liefern. Dies ist viel einfacher als die Elementsuche in Kombination mit der exec-Anweisung zur Formatierung der Ausgabe.

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

7voto

Prathima Punkte 101

Der obige Befehl gibt alle Dateien aus, die im Einzelnen geändert wurden branch(myBranch) .
Wenn Sie jedoch die Dateien finden möchten, die von einem bestimmten Benutzer an einem bestimmten Datum geändert wurden, benötigen Sie den folgenden Befehl:

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

(in einer einzigen großen Zeile zum Kopieren/Einfügen:)

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

2voto

jaxkewl Punkte 185

Versuchen Sie diesen Befehl

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

0voto

Amit Basak Punkte 1

Verwenden Sie das folgende Skript

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

Speichern Sie dies in einer Datei mit dem Namen ctlsbr und verwenden Sie diese in der gewünschten vob, um die Liste der geänderten Dateien zu ermitteln.

Danke, Amit

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X