2011-06-27 9 views

Respuesta

21

Puede utilizar

cvs diff -r FIRSTREVISION -r SECONDREVISION filename 

comparar dos revisiones.

Puede ser posible hacer la comparación que necesita directamente, pero también podemos automatizarla procesando los resultados de cvs log filename. Así, por ejemplo, se obtiene el número de revisión más reciente con

cvs log filename | grep ^revision | head -n 1 | cut -c 10- 

y la revisión anterior con

cvs log filename | grep ^revision | head -n 2 | tail -n 1 | cut -c 10- 

Quiere fusionar estos juntos, por lo que crear un archivo de comandos BASH (digamos llamada lastdiff. sh) que contiene:

cvs diff -r $(cvs log $1 | grep ^revision | head -n 2 | tail -n 1 | cut -c 10-) -r $(cvs log $1 | grep ^revision | head -n 1 | cut -c 10-) $1 

y entonces usted será capaz de obtener su diff ejecutándolo con el nombre de archivo como un parámetro, por ejemplo, ./lastdiff.sh nombre de archivo.

+0

Esto es muy útil. Pero, ¿hay alguna manera de hacer que esto funcione para el código comprometido con la rama? Con la solución anterior, puedo obtener la diferencia entre 1.1 y 1.2 pero quiero tomar una diferencia entre 1.1 y 1.1.2.1. – user1305398

0

Puede usar cvs diff para conocer las diferencias entre la versión local desprotegida y la versión presente en el encabezado. solución

cvs diff -r ver1 -r ver2 <FILE-NAME> 
0

yo esperaba no era una opción obvia cvs me estaba perdiendo, pero borrible del guión parece ser la misma. Si por cualquier razón usted todavía está utilizando CVS, es posible encontrar este refinamiento útil:

cvs diff $(cvs log $FILE | 
grep "^revision" | 
sed "s/^revision/-r/ 
2q") $FILE 

Esto utiliza sed que tanto agarrar las dos últimas revisiones de una sola invocación de "cvs log" y crear las opciones -r directamente desde esa salida.

Cuestiones relacionadas