2010-01-16 7 views
39

Existe-t-il un moyen simple d'afficher uniquement les fichiers de mon référentiel qui ont été ajoutés, supprimés ou modifiés localement? Je sais que je peux taper "cvs stat" et regarder à travers la liste des fichiers, mais c'est fastidieux et sujet aux erreurs. Je me demande s'il y a un moyen plus facile. J'utilise CVS 1.11.17, au cas où cela serait important.CVS: affiche les fichiers modifiés localement

Répondre

70

Une mise à jour « factice » vous donnera ces informations.

cvs -qn update 

Une brève description des options utilisées:

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

sans beaucoup d'expérience CVS, je suis curieux de savoir ce que les options -qn impliquent ... – dokaspar

+0

pourquoi ne pas utiliser 'diff'? – mmcrae

19

Vous pouvez obtenir une liste courte des différences en utilisant la commande cvs diff:

cvs -q diff --brief 
4

pipe à grep!

cvs -Q status | grep -i locally 
+0

J'ai essayé ça, et je n'ai pas vraiment aimé. Je voudrais voir le chemin pour les fichiers modifiés, et pas seulement les noms de fichiers. J'ai essayé cvs stat 2>/dev/null | grep Local -B1 -A4 | grep -vE "^ $" et c'était un peu mieux, mais plutôt désordonné et décalé. –

0

Voici la liste des scripts nmake-perl fichiers modifiés, il est basé sur -qn de mise à jour cvs précitée:

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

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

Faites une mise à jour CVS fichiers avec M sont préfixés fichiers modifiés.

Exemple:

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

Comme alternative à couramment mentionné cvs update -qn, vous pouvez aller pour la commande cvs release. Mais celui-ci est interactif et demande une confirmation à la fin de la sortie (il suffit donc de l'annuler!). Sortie normale:

> 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. 
> 

Après la question Are you sure you want to release directory '.': vous mettez quelque chose de différent que y ou Y.

1

Voici ce que j'utilise:

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/' 

Sortie:

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

vous pouvez utiliser la commande suivante pour obtenir la liste des fichiers modifiés localement

mise à jour de cvs | grep "M" | awk '{print $ 2}'

Questions connexes