Comment trouver le nombre de lignes modifiées entre les versions de CVS?

StackOverflow https://stackoverflow.com/questions/227210

  •  03-07-2019
  •  | 
  •  

Question

J'ai passé la majeure partie de la journée à apporter quelques modifications d'ordre administratif à la base de code de l'un de nos projets (remplacement de tous les System.out.println() appels par log4j).

Je suis un peu curieux de savoir combien de lignes de code j'ai actualisées avec cet ensemble de modifications.

Existe-t-il de toute façon avec cvs diff ou une autre commande pour obtenir un décompte précis du nombre de lignes modifiées?

j'ai essayé

cvs diff -b -B -R

pour obtenir toutes les modifications dans le répertoire de travail (et récursivement les sous-répertoires), mais pour chaque fichier modifié, il affiche également les informations fichier / version, ce qui rend inutile le comptage des lignes de sortie.

Des idées?

Était-ce utile?

La solution

Filtrez les lignes supplémentaires de la sortie diff, puis comptez les lignes.

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

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

Autres conseils

L'utilitaire diffstat est un bon outil pour obtenir des métriques simples à partir de la sortie de cvs, svn ou d'autres diffs.

Vous pouvez simplement diriger la sortie de cvs diff vers diffstat.

Qu'en est-il de vérifier que vous avez modifié toutes les instances avec quelque chose comme:

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

cela devrait vous donner zéro.

Ensuite, remplacer l'expression régulière dans le second egrep par 'log4j' devrait avoir wc -l renvoyant le nombre de lignes que vous avez modifiées.

HTH.

acclamations,

Rob

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top