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?
Antworten
Zu viele Anzeigen?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
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
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
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