version control - Cómo encontrar los archivos modificados bajo una rama clara
version-control clearcase (5)
He modificado y registrado un montón de archivos en mi rama. Ahora necesito obtener la lista de archivos que modifiqué. ¿Hay algún script para hacerlo?
El comando anterior proporcionará todos los archivos modificados en una branch(myBranch)
en particular branch(myBranch)
.
Pero si desea encontrar los archivos modificados por un usuario en particular en una fecha en particular, necesitará el siguiente comando:
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
(en una línea gigante para copiar / pegar propósito :)
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
El comando de búsqueda es la mejor fuente. Para abordar las inquietudes de los OP sobre cómo recuperar un nombre "tullido" con @@ y toda la información de la versión y la versión posterior, se puede agregar la opción "-nxn" para no proporcionar esta información. Esto es mucho más fácil que hacer la búsqueda de elementos combinada con la directiva exec para formatear la salida.
cleartool find . -type f -branch "brtype(mybranch)" -nxn -print
Usa el siguiente script
#!/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
Guarde esto en un archivo llamado ctlsbr y utilícelo en la vob que desea para encontrar la lista de archivos modificados.
Gracias amit
prueba este comando
cleartool find -avo -nxname -element ''{brtype(branch_name)}'' -print
El comando cleartool find
debería ayudarlo a encontrar cualquier elemento (archivo) con al menos una versión en una rama dada.
Lo siguiente encontrará todos los archivos en una rama.
cleartool find . -type f -branch "brtype(mybranch)" -print
Consulte los ejemplos de búsqueda o " Ejemplos adicionales del comando de búsqueda cleartool " para obtener más ejemplos.
El sarath OP agrega:
me da un nombre de archivo lisiado con @ y otros caracteres. ¿Es posible llegar con el camino normal?
Es cierto que tal comando le daría algo como (como ejemplo):
./.checkstyle@@/main/MyBranch
./.classpath@@/main/MyBranch_Int/MyBranch
./.classycle@@/main/MyBranch_Int/MyBranch
./.fbprefs@@/main/MyBranch_Int/MyBranch
Para obtener solo el camino, tienes dos soluciones:
1 / buscar elementos (y no versiones) con la rama derecha:
cleartool find . -type f -ele "brtype(mybranch)" -print
(note el -ele
reemplazando el -branch
)
Eso daría:
./.checkstyle@@
./.classpath@@
./.classycle@@
./.fbprefs@@
./.pmd@@
Pero todavía tienes el "feo" '' @@
''.
2 / combina la directiva find con una directiva exec que describe el elemento encontrado con el formato fmt_ccase
:
cleartool find . -type f -ele "brtype(mybranch)" -exec "cleartool descr -fmt /"%En/n/" /"%CLEARCASE_PN%/""
Forma multilínea para legibilidad:
cleartool find . -type f -ele "brtype(mybranch)" /
-exec "cleartool descr -fmt /"%En/n/" /"%CLEARCASE_PN%/""
Tenga en cuenta que todas las comillas dobles "internas" deben escaparse.
El %En
le dará el nombre del elemento encontrado.
./.checkstyle
./.classpath
./.classycle
./.fbprefs
./.pmd
./.project
./.settings/dico.txt