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
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.
Vous pouvez obtenir une liste courte des différences en utilisant la commande cvs diff
:
cvs -q diff --brief
pipe à grep
!
cvs -Q status | grep -i locally
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é. –
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;"
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
...
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
.
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
vous pouvez utiliser la commande suivante pour obtenir la liste des fichiers modifiés localement
mise à jour de cvs | grep "M" | awk '{print $ 2}'
sans beaucoup d'expérience CVS, je suis curieux de savoir ce que les options -qn impliquent ... – dokaspar
pourquoi ne pas utiliser 'diff'? – mmcrae