2010-01-16 14 views
39

Gibt es eine einfache Möglichkeit, nur die Dateien in meinem Repository anzuzeigen, die lokal hinzugefügt, entfernt oder geändert wurden? Ich weiß, dass ich "cvs stat" eingeben und die Liste der Dateien durchsehen kann, aber das ist mühsam und fehleranfällig. Ich frage mich, ob es einen leichteren Weg gibt. Ich benutze CVS 1.11.17, falls das wichtig ist.CVS: Dateien anzeigen, die lokal geändert wurden

Antwort

70

A werden diese Informationen geben.

cvs -qn update 

Eine kurze Beschreibung der verwendeten Optionen:

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

ohne viel CVS Erfahrung, bin ich gespannt was die Optionen -qn implizieren ... – dokaspar

+0

warum nicht 'diff' verwenden? – mmcrae

19

Sie können eine kurze Auflistung der Unterschiede erhalten die cvs diff Befehl: update 'Dummy'

cvs -q diff --brief 
4

Rohr es grep! Hier

cvs -Q status | grep -i locally 
+0

Ich habe das versucht, und ich mochte es nicht wirklich. Ich möchte den Pfad für die geänderten Dateien und nicht nur die Dateinamen sehen. Ich habe versucht, cvs stat 2>/dev/null | grep Local -B1 -A4 | grep -vE "^ $" und es war ein wenig besser, aber irgendwie chaotisch und schrullig. –

0

ist nmake-Perl-Skript Liste geänderten Dateien, es basiert auf vorgenannten cvs update -qn:

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

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

Sie ein CVS-Update Dateien vorangestellt mit M-Dateien modifiziert.

Beispiel:

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

Als Alternative häufig cvs update -qn erwähnt, können Sie für cvs release Befehl gehen. Aber dieser ist interaktiv und bittet um Bestätigung am Ende der Ausgabe (also müssen Sie ihn einfach abbrechen!). Normale Ausgabe:

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

Nach Frage Are you sure you want to release directory '.': Sie etwas setzen anders als y oder Y. Hier

1

ist das, was ich benutze:

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

Ausgang:

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

Sie folgenden Befehl verwenden können, um die Liste der Dateien erhalten Sie geändert lokal

cvs -qn update | grep "M" | awk '{print $ 2}'

Verwandte Themen