Distinciones entre estado (status) y actualización (update)

En Subversion, hemos intentado eliminar muchas de las confusiones entre los comandos cvs status y cvs update.

El comando cvs status tiene dos propósitos: primero, mostrarle al usuario cualquier modificación local en la copia de trabajo, y segundo, mostrarle al usuario qué ficheros están desactualizados. Desafortunadamente, debido a la difícil de leer salida de estado, muchos usuarios de CVS no se aprovechan del todo de este comando. En cambio, han desarrollado el habito de ejecutar cvs update o cvs update -n para ver rápidamente sus modificaciones. Si los usuarios olvidan usar la opción -n, esto tiene el efecto secundario de combinar cambios del repositorio que no están preparados.

Con Subversion, hemos intentado eliminar este desorden haciendo la salida de svn status fácil de leer para los humanos y los programas de análisis sintácticos. También, svn update solo imprime información sobre los ficheros que están actualizados, no sobre modificaciones locales.

svn status imprime todos los ficheros que tienen modificaciones locales. Por defecto, no se contacta con el repositorio. Mientras este subcomando acepta un número justo de opciones, los siguientes son los usados más comúnmente:

-u

Contacta con el repositorio para determinar, y después mostrar, la información más desactualizada.

-v

Muestra todas las entradas bajo el control de versiones.

-N

Se ejecuta no-recursivamente (no desciende hacia los subdirectorios).

El comando status tiene dos formatos de salida. En el formato corto por defecto, las modificaciones locales se parecen a esto:

% svn status
M     ./foo.c
M     ./bar/baz.c

Si usted especifica la opción --show-updates (-u), un formato de salida más largo es usado:

% svn status -u
M             1047    ./foo.c
       *      1045    ./faces.html
       *         -    ./bloo.png
M             1050    ./bar/baz.c
Status against revision:   1066

En este caso, aparecen dos columnas nuevas. La segunda columna contiene un asterisco si el fichero o directorio está desactualizado. La tercera columna muestra el número de revisión del objeto en la copia de trabajo. En el ejemplo de arriba, el asterisco indica que faces.html será parcheado si actualizamos, y que bloo.png es un nuevo fichero añadido en el repositorio. (El - al lado de bloo.png significa que todavía no existe en la copia de trabajo.)

Por último, aquí está un resumen rápido de los códigos de estado más comunes que usted puede ver:

A    Resource is scheduled for Addition
D    Resource is scheduled for Deletion
M    Resource has local modifications
C    Resource has conflicts (changes have not been completely merged
       between the repository and working copy version)
X    Resource is external to this working copy (comes from another
       repository.  See svn:externals)
?    Resource is not under version control
!    Resource is missing or incomplete (removed by another tool than
       Subversion)

Subversion ha combinado los códigos de CVS P y U en U. Cuando ocurre una fusión o un conflicto, Subversion simplemente imprime G o C, antes que una oración entera sobre esto.

Para una discusión más detallada sobre svn status, vea svn status.