2008-10-22 3 views
2

J'ai passé la majeure partie de la journée à faire ce sont essentiellement des changements d'ordre administratif à la base de code de l'un de nos projets (remplaçant tous les appels System.out.println() avec log4j).Comment trouver le nombre de lignes changées entre les versions CVS?

Je suis un peu curieux combien de lignes de code que j'ai mis à jour avec cet ensemble de modifications.

Y at-il de toute façon avec cvs diff ou une autre commande pour obtenir un décompte précis du nombre de lignes ont changé?

J'ai essayé

cvs diff -b -B -R 

pour obtenir tous les changements dans le répertoire de travail (et récursive les sous-répertoires), mais pour chaque fichier a été modifié, il imprime également des informations fichier/version, qui fait simplement compter les lignes de sortie inutiles.

Des idées?

Répondre

3

filtrer les lignes supplémentaires de la sortie de comparaison, puis compter les lignes.

Par exemple, grep seulement les lignes commençant par < ou>

cvs diff -b -B -R | egrep '^<|>' | wc -l 
+0

C'est ce que j'ai fini par utiliser après tout, quelques secondes avant que vous posté - merci –

+0

en utilisant cette ligne modifiée comptera deux fois droit? –

1

Vous pouvez simplement la sortie du tuyau de cvs diff à diffstat.

+0

Cela fonctionne bien, bien qu'il semble compter deux fois les fichiers comme « jsp/blah.jsp » et « blah.jsp ». Je ne connaissais pas diffstat avant, merci! –

0

Qu'en est-il de vérifier que vous avez changé tous les cas, avec quelque chose comme:

find . | egrep -v -e '(CVS|<other patterns you don't want>)' | \ 
    xargs egrep -e 'System\.out\.println[(][)]' | wc -l 

que vous devez donner zéro.

remplaçant alors l'expression rationnelle dans la deuxième egrep avec « log4j » devrait avoir wc -l retourner le nombre de lignes que vous avez changé.

HTH.

votre,

Rob

5

L'utilitaire diffstat est un bel outil pour obtenir des mesures simples de la sortie de cvs, svn ou d'autres diffs.

+0

diffstat a travaillé pour moi. Sous Windows, j'ai installé Cygwin et sélectionné les fichiers diffstat et cvs du groupe devel. L'invocation de commande ressemble à cvs diff -r 1.1.6.1 -r 1.1.6.4 "Certains fichiers" | diffstat -m – buzz3791

Questions connexes