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?
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
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
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
essayez cette commande
cleartool find -avo -nxname -element '{brtype(branch_name)}' -print
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