2010-01-16 19 views
39

¿Hay alguna manera simple de mostrar solo los archivos en mi repositorio que se agregaron, eliminaron o modificaron localmente? Sé que puedo escribir "cvs stat" y mirar la lista de archivos, pero eso es tedioso y propenso a errores. Me pregunto si hay una manera más fácil. Estoy usando CVS 1.11.17, en caso de que eso importe.CVS: mostrar los archivos que se cambian localmente

Respuesta

70

Una actualización 'ficticia' le dará esta información.

cvs -qn update 

Una breve descripción de las opciones utilizadas:

-q  Cause CVS to be somewhat quiet. 
-n  Do not execute anything that will change the disk. 
+4

sin mucha experiencia en CVS, tengo curiosidad por saber qué significan las opciones -qn ... – dokaspar

+0

¿por qué no utilizar 'diff'? – mmcrae

19

Usted puede obtener una lista corta de las diferencias utilizando el cvs diff comando:

cvs -q diff --brief 
4

de tuberías a grep!

cvs -Q status | grep -i locally 
+0

Lo intenté, y realmente no me gustó. Me gustaría ver la ruta para los archivos modificados, y no solo los nombres de los archivos. Probé cvs stat 2>/dev/null | grep Local -B1 -A4 | grep -vE "^ $" y fue un poco mejor, pero un tanto desordenado y peculiar. –

0

Aquí está la lista de archivos modificados guión nmake-perl, que se basa en la actualización mencionada cvs -qn:

DIRS=\ 
    c:\project1\ 
    c:\project2 

all: $(DIRS) 
    !cd $? & cvs -qn update | perl -ne "s!\/!\\!g;print '$?\\'.qq($$1) if /^M (.*)/s;" 
0

Hacer un CVS actualización archivos antepuesto con M son archivos modificados.

Ejemplo:

CVS Update 
cvsntsrv server: Updating dat/idv 
M dat/idv/conduct.idv = Modified 
... 
0

Como alternativa a la mencionada comúnmente cvs update -qn, se puede ir por cvs release comando. Pero este es interactivo y pide confirmación al final de la salida (¡así que solo tiene que abortarlo!). Salida normal:

> cvs release . 
... 
U some/updated/file 
M some/modified/file 
... 
You have [1] altered files in this repository. 
Are you sure you want to release directory `.': n 
** `release' aborted by user choice. 
> 

Después pregunta Are you sure you want to release directory '.': pones algo diferente que y o Y.

1

Esto es lo que yo uso:

cvs -Q status | grep -A 4 Locally | egrep -v '^\-\-|^ Working|^ Commit|^$' | awk '{print $2 " " $4}' | sed -e 's/\<Locally\>//;s/revision: \CVS-REPOSITORY-PATH/\t\t/' 

Salida:

pin_stages.ref 
      tests/unit/ccsn/pin_stages/pin_stages.ref,v 
pin_stages_func.ref 
      tests/unit/ccsn/pin_stages_func/pin_stages_func.ref,v 
0

puede utilizar siguiente comando para obtener la lista de archivos que se modifican localmente

cvs -qn actualización | grep "M" | awk '{print $ 2}'

Cuestiones relacionadas