¿Alguien tiene un script o alias para encontrar archivos sin seguimiento (en realidad: sin agregar) en un árbol de Perforce?
EDITAR: Actualicé la respuesta aceptada en esta ya que parece que P4V agregó soporte para esto en la versión de enero de 2009.
version-control
perforce
David Joyner
fuente
fuente
p4 status
no solo ENCUENTRA archivos sin seguimiento, sino que EMPIEZA A SEGUIRLOS. Es decir,p4 status
no es una consulta de solo lectura, como uno sospecharía por el nombre, sino que en realidad es un comando que cambia cosas, no los archivos del espacio de trabajo. Esto NO es lo que debería hacer un comando de estado, y NO lo quesvn status
hace. Lo más parecido a lo que puedo encontrarsvn status
esp4 reconcile -na
- -a para decir "archivos que deben agregarse", -n para decir "en realidad no cambien nada". /// Originalmente dije algo mucho más fuerte.p4 status
) , y lo respondí yo mismo. Mejor bienvenidap4 reconcile
yp4 status
son lentos como el infierno, mientrasgit status
terminan de ejecutarse en 1-3 segundos.Respuestas:
EDIT: Utilice
p4 status
ahora. Ya no hay necesidad de saltar por el aro. Vea la respuesta de @ConelPanic .En la versión de enero de 2009 de P4V, puede hacer clic con el botón derecho en cualquier carpeta del árbol de su espacio de trabajo y hacer clic en "conciliar trabajo sin conexión ..."
Esto hará un pequeño procesamiento y luego mostrará una vista de árbol dividido de los archivos que no están desprotegidos pero que tienen diferencias con la versión del depósito, o que no están registrados en absoluto. Incluso puede haber algunas otras categorías que surjan.
Puede hacer clic con el botón derecho en los archivos en esta vista y verificarlos, agregarlos o incluso revertirlos.
Es una herramienta muy útil que me salvó el trasero varias veces.
EDITAR: ah, la pregunta se hizo específicamente sobre los scripts, pero dejaré esta respuesta aquí por si acaso.
fuente
p4 status
no solo ENCUENTRA archivos sin seguimiento, sino que EMPIEZA A SEGUIRLOS. Es decir,p4 status
no es una consulta de solo lectura, como uno sospecharía por el nombre, sino que en realidad es un comando que cambia cosas, no los archivos del espacio de trabajo. Esto NO es lo que debería hacer un comando de estado, y NO lo quesvn status
hace. Lo más parecido a lo que puedo encontrarsvn status
esp4 reconcile -na
- -a para decir "archivos que deben agregarse", -n para decir "en realidad no cambien nada". /// Originalmente dije algo mucho más fuerte.p4 status
es básicamente un sinónimo dep4 reconcile -n
. ¿Quizás corristep4 status -A
cuál es sinónimo dep4 reconcile
?En linux, o si tiene gnu-tools instalado en Windows:
Esto mostrará un mensaje de error para cada archivo no contabilizado. Si desea capturar esa salida:
fuente
.p4ignore
y puede obtener una vista previa y editar automáticamente archivos sin seguimiento / modificados / eliminados.find . -type l
) y proporciona una salida engañosa para los archivos P4 agregados a la fuerza porque contienen los caracteres@
o%
. Sin embargo, estos archivos son una minoría, por lo que una revisión manual de estos casos extremos funcionará en la mayoría de los casos.Bajo Unix:
Esto imprimirá una lista de archivos que no se agregaron en su cliente o en el depósito de Perforce. Solía
! -name '*~'
excluir archivos que terminan en ~.fuente
Ahh, uno de los clásicos de Perforce :) Sí, realmente apesta que TODAVÍA no haya una manera fácil de hacerlo integrado en los comandos predeterminados.
La forma más sencilla es ejecutar un comando para buscar todos los archivos en la raíz de su cliente y luego intentar agregarlos al depósito. Terminará con una lista de cambios de todos los archivos nuevos y los archivos existentes se ignorarán.
Por ejemplo, dir / s / b / AD | p4 -x - agregar
(use 'find. -type f -print' desde una línea de comando nix).
Si desea una lista física (en la consola o archivo), puede canalizar los resultados de una diferencia (o agregarlos si también los desea en una lista de cambios).
Si está ejecutando esto dentro de P4Win, puede usar $ r para sustituir la raíz del cliente del espacio de trabajo actual.
fuente
Sí, PERO .
A partir de la versión 2012.1 de Perforce, existe el comando
p4 status
y en P4V 'conciliar el trabajo sin conexión'. Sin embargo, ambos son muy lentos. Para excluir archivos irrelevantes, deberá escribir unp4ignore.txt
archivo según https://stackoverflow.com/a/13126496/284795fuente
p4 status
desde la versión 2012.1. Si se ha mantenido alejadop4 status
debido a problemas de rendimiento, podría valer la pena probarlo nuevamente para ver cómo se comporta ahora.Me siento impulsado a agregar una respuesta, ya que la respuesta aceptada, y algunas de las otras, tienen lo que creo que es un problema significativo: no entienden la diferencia entre un comando de consulta de solo lectura y un comando que hace cambios.
No espero ningún crédito por esta respuesta, pero espero que ayude a otros a evitar perder el tiempo y cometer errores siguiendo la respuesta aceptada pero incorrecta en mi humilde opinión.
--- + BREVE
Probablemente la forma más conveniente de encontrar todos los archivos sin seguimiento en un espacio de trabajo forzoso es
p4 reconcile -na
.-a
dice "dame archivos que no estén en el repositorio, es decir, que deberían agregarse".-n
dice "no hacer cambios", es decir, un ensayo. (Aunque los mensajes pueden decir "abierto para agregar", mentalmente debes interpretarlo como "se abriría para agregar si no es -n")Probablemente la forma más conveniente para encontrar todos los cambios locales hechos sin conexión - no sólo los archivos que necesitan poder ser agregado, sino también archivos que necesitan fuerzas para eliminar, o que hayan sido cambiado sin ser abierto para la edición a través de
p4 edit
, esp4 reconcile -n
.Varias respuestas proporcionaron guiones, a menudo involucrando
p4 fstat
. Si bien no he verificado todos esos scripts, a menudo utilizo scripts similares para compensar las deficiencias de los comandos forzosos comop4 reconcile -n
, por ejemplo, a menudo encuentro que quiero rutas locales en lugar de rutas de depósito de Perforce o rutas de espacio de trabajo.--- + ADVERTENCIA
p4 status
NO es la contraparte de los comandos de estado en otros sistemas de control de versiones.p4 status
NO es una consulta de solo lectura.p4 status
de hecho, encuentra el mismo tipo de cambios que lop4 reconcile
hace y los agrega al repositorio.p4 status
no parece tener una-n
opción de ejecución en seco como lap4 reconcile
tiene.Si lo hace
p4 status
, mire los archivos y piense "Oh, no los necesito", entonces tendrá quep4 revert
usarlos si desea continuar editando en el mismo espacio de trabajo. De lo contrario, los cambios que sep4 status
agregaron a su conjunto de cambios se verificarán la próxima vez.Parece que hay poca o ninguna razón para usar en
p4 status
lugar dep4 reconcile -n
, excepto por algunos detalles del espacio de trabajo local frente al nombre de la ruta del depósito.Solo puedo imaginar que quien eligió 'estado' para un comando que no era de solo lectura tenía un dominio limitado del idioma inglés y otras herramientas de control de versiones.
--- +
P4V
GUIEn la GUI
p4v
, el comando reconciliar encuentra cambios locales que pueden necesitar ser agregados, eliminados o abiertos para editarlos. Afortunadamente, no los agrega a una lista de cambios de forma predeterminada; pero es posible que desee tener cuidado de cerrar la ventana de conciliación después de inspeccionarla, si no desea confirmar los cambios.fuente
Utilizo lo siguiente en mi herramienta que hace una copia de seguridad de los archivos en el espacio de trabajo que difieren del repositorio (para Windows). Maneja algunos casos extraños que a Perforce no le gustan mucho, como espacios en blanco incrustados, estrellas, porcentajes y marcas de hash:
" dir / S / B / AD " enumera todos los archivos en o debajo de esta carpeta ( / S ) en formato "desnudo" ( / B ) excluyendo directorios (/ AD ). El " sed " cambia los caracteres peligrosos a su forma " % xx " (a la HTML), y el comando " p4 have " comprueba esta lista (" -x- ") y el servidor descarta cualquier cosa sobre los archivos que realmente ubica en el repositorio. (" 1> NUL: "). El resultado es un montón de líneas como:
Et voilà!
fuente
Alternativamente desde P4Win, use la opción "" Archivos locales no en depósito "en el panel de vista de la izquierda.
No uso mucho P4V, pero creo que el equivalente es seleccionar "Ocultar archivos de espacio de trabajo local" en el menú desplegable de filtros de la pestaña Vista del espacio de trabajo. P4 help fstat
En P4V 2015.1 encontrará estas opciones debajo del botón de filtro como este:
fuente
Quick 'n Dirty: En p4v, haga clic con el botón derecho en la carpeta en cuestión y agregue todos los archivos debajo de ella a una nueva lista de cambios. La lista de cambios ahora contendrá todos los archivos que actualmente no forman parte del depósito.
fuente
Los siguientes comandos producen una salida similar a un estado, pero ninguno es equivalente a
svn status
ogit status
, proporcionando un resumen de una línea del estado de cada archivo:p4 status
p4 opened
p4 diff -ds
fuente
No tengo suficientes puntos de reputación para comentar, pero la solución de Ross también enumera los archivos que están abiertos para agregar. Probablemente no quieras usar su respuesta para limpiar tu espacio de trabajo.
Los siguientes usos
p4 fstat
(gracias Mark Harrison) en lugar dep4 have
, y enumeran los archivos que no están en el depósito y no están abiertos para agregar.=== Jac
fuente
Método rápido, pero poco ortodoxo. Si el código base no agrega nuevos archivos / cambia la vista con demasiada frecuencia, puede crear un repositorio 'git' local fuera de su pago. Desde una sincronización forzosa limpia, git init, agregue y confirme todos los archivos localmente. El estado de Git es rápido y mostrará archivos no confirmados previamente.
fuente
El
p4 fstat
comando le permite probar si existe un archivo en el espacio de trabajo, combinar confind
para localizar archivos para verificar como en el siguiente ejemplo de Perl:O puedes usar
p4 reconcile -n -m ...
Si está "abierto para eliminar", se ha eliminado del espacio de trabajo. Tenga en cuenta que el comando anterior se ejecuta en modo de vista previa (
-n
).fuente
Necesitaba algo que funcionara en Linux, Mac o Windows. Así que escribí un script de Python para ello. La idea básica es recorrer los archivos y ejecutarlos
p4 fstat
en cada uno. (por supuesto, ignorando las dependencias y las carpetas tmp)Puede encontrarlo aquí: https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9
fuente
Este comando puede darle una lista de archivos que necesitan ser agregados, editados o eliminados:
p4 status -aed ...
también puede usarlos por separado
p4 status -a ...
p4 status -e ...
p4 status -d ...
fuente
En P4V, en el elemento de menú "Ver", elija "Archivos en carpeta", que abre una nueva pestaña en el panel derecho. En el extremo derecho de las pestañas hay un pequeño icono que abre una ventana llamada "Archivos en carpeta" con 2 iconos. Seleccione el icono de la izquierda que parece un embudo y verá varias opciones. Elija "Mostrar elementos que no están en el depósito" y se mostrarán todos los archivos de la carpeta. Luego, simplemente haga clic con el botón derecho en el archivo que desea agregar y elija "Marcar para agregar ...". Puede verificar que está allí en la pestaña "Pendiente". Simplemente envíe como de costumbre (Ctrl + S).
fuente