tipos - ¿Cuál es el comando p4 equivalente a algo así como el estado de git/hg/bzr/svn?(Sugerencia: no `p4 estado`)



¿qué tipos de etiquetas existen en git? (1)

P: ¿Cuál es el equivalente forzosamente para el comando de estado de otras herramientas de control de versiones?

Ej. git status o git status hg status o bzr status o svn status ? (Confusamente, cvs update -nq es lo más parecido a ese sistema de control de versiones).

Sugerencia: NO es el p4 status .

En primer lugar, el p4 status no le informa sobre los archivos que están en listas de cambios pendientes. Necesita llamar a p4 opened para eso, pero el formato de salida es bastante diferente.

En segundo lugar, el p4 status no siempre es un comando de estado de solo lectura. Creo que la versión forzosa que estaba usando en el momento en que originalmente publiqué esto de manera predeterminada en realidad cambia el estado del espacio de trabajo, en realidad agrega cambios locales a una lista de cambios pendiente. Pero puedo recordar mal. Esa compañía usó una versión muy antigua de forzosamente. A partir del momento en que estoy actualizando esto, utilizando una versión de cliente forzosa con fecha de 2014/04/08, el comportamiento de p4 status predeterminado es de solo lectura, pero tenga cuidado de no utilizar la opción -A si no desea realizar cambios. al espacio de trabajo.

Parece que se necesita alguna combinación de p4 status y p4 opened para obtener el mínimo de lo que hacen los demás VCS en un solo comando.

DETALLE:

La mayoría de los sistemas de control de versiones tienen un comando que puede indicarle rápidamente el estado de un área de trabajo. Información como:

  • qué archivos están desprotegidos para su edición (si el VCS usa checkouts)
    • cuáles de esos archivos extraídos se han cambiado o eliminado localmente
  • qué archivos se han cambiado aunque no se hayan desprotegido
    • por ejemplo, qué archivos pueden tener cambios que desea fusionar
  • posiblemente qué archivos se actualizan más recientemente en el repositorio que en su área de trabajo
    • por ejemplo, cambios que desee fusionar en su espacio de trabajo
  • qué archivos están en el área de trabajo pero no están (aún) bajo el control de la versión
    • por ejemplo, qué archivos es posible que desee agregar al sistema de control de versiones
    • o posiblemente agregar a su .hgignore / .gitignore / ... ignorar patrones de archivos
  • qué archivos están bajo control de versión pero no están en el área de trabajo
    • por ejemplo, qué archivos desea eliminar de su sistema de control de versiones
    • o qué archivos puede haber eliminado accidentalmente

Exactamente qué información de estado se proporciona depende del VCS. Por ejemplo, Perforce está basado en el pago, pero la mayoría de las herramientas modernas de control de versiones no lo son.

Pero ... casi todas las herramientas de control de versiones tienen un único comando simple que le dirá tal estado.

Excepto, aparentemente, por fuerza.

... Puedo continuar para proporcionar ejemplos de lo que hace el estado de git / hg / bzr / svn en un solo comando, pero que por fuerza parece requerir al menos dos comandos para proporcionar.


Sigo diciendo que no me gusta responder a mi propia pregunta, pero voy a hacer esto aquí. Doy la bienvenida a cualquiera que quiera compartir mejores soluciones y scripts. Agradecería especialmente a alguien mostrándome que esto es innecesario, que Perforce realmente tiene el equivalente del estado svn/git/hg/bzr status .

--- + A: estado de git/hg/bzr/svn status = git/hg/bzr/svn status p4 opened + p4 status

In forzadamente, al menos se necesitan dos comandos para aproximar lo que otras herramientas de VCS hacen con un solo comando, para proporcionar un resumen rápido del estado del espacio de trabajo en el depósito:

p4 opened : para obtener una lista de los archivos que ha abierto en el área de trabajo

p4 status : para obtener una lista de archivos no registrados en Perforce.

** --- + OLD: p4 reconcile -n lugar del p4 status **

O bien las versiones anteriores de forzado tenían el p4 status actúan como p4 reconcile por defecto haciendo cambios en el espacio de trabajo como la adición al espacio de trabajo. O estaba roto en el momento en que escribí esta página.

Nuevo: git/hg/bzr/svn status = p4 opened git/hg/bzr/svn status p4 opened + p4 status **

Nuevo: git/hg/bzr/svn status = p4 opened + p4 reconcile -n **

p4 reconcile -n - para una lista de archivos que no se abren forzosamente, pero a los que se han realizado cambios locales.

( p4 reconcile -n para decir "no hacer cambios")

-n para decir conciliar para no hacer cambios. Ya no es necesario, ahora que el p4 status es de solo lectura por defecto.

ANTIGUO: p4 $ P4OPTS abierto p4 $ P4OPTS conciliar -n | sed-e 's / - / - RECONCILIO DE HACER: /'

--- + Adecuado para un alias o tipeo rápido

Yo combino estos de la siguiente manera:

p4 $P4OPTS opened
p4 $P4OPTS status | sed -e 's/ - / - RECONCILE TO MAKE: /'

La parte sed para diferenciar mejor el estado de los archivos que ya se han abierto desde el estado de los archivos no abiertos bajo forzosa. Pero observo que esto no es seguro, cuando un archivo puede tener la cadena "-" en su nombre.

--- + Fancified

Debido a que a menudo quiero las rutas locales, actualmente uso la siguiente secuencia de comandos de la shell my-p4-status para darme algo más como lo que estoy acostumbrado desde el comando de estado de otros VCSes =.

La siguiente secuencia de comandos usa la reconcile -n , y aún no se ha actualizado para usar el status .

#!/bin/bash
# Perforce lacks a single command to tell you the status of a workspace,
# the equivalent of hg/bzr/git status.

# Warning: "p4 status" is not actually a read-only query!!!
# "p4 status" is more like "p4 reconcile" - it actually opens files to edit, add, or delete (-e -a -d)

# p4 opened only reports on the status of files currently opened by Perforce

# It is necessary to combine "p4 opened" and "p4 reconcile -n" to get a net overview.

# TBD: convert to local file path, rather than depot path.
# (Not a simple sed-xargs-p4_fstat pipeline)

P4OPTS=''
if [ "$1" == "-ztag" ] || [ "$1" == "-verbose" ]
then
   shift
   P4OPTS="-ztag"
fi

case $P4OPTS in
-ztag)
    p4 $P4OPTS opened
    p4 $P4OPTS reconcile -n
    ;;
*)
    echo '#### p4 opened - Perforce files already opened ###'
    p4 $P4OPTS opened
    echo '#### p4 reconcile -n --- local edits, not opened in Perforce.  Run p4 reconcile to actually open. ###'
    p4 $P4OPTS reconcile -n | sed -e 's/ - / - RECONCILE TO MAKE: /'
esac

--- + ¿Mejor? ¡Por favor comparte!

Si tienes algo mejor, por favor comparte.





perforce