2010-01-16 16 views
39

Czy istnieje prosty sposób wyświetlania tylko plików w moim repozytorium, które zostały lokalnie dodane, usunięte lub zmodyfikowane? Wiem, że mogę wpisać "cvs stat" i przejrzeć listę plików, ale jest to nużące i podatne na błędy. Zastanawiam się, czy jest łatwiejszy sposób. Używam CVS 1.11.17, na wszelki wypadek.CVS: pokaż pliki, które są lokalnie zmienione

Odpowiedz

70

A 'dummy' zmiana dadzą Ci te informacje.

cvs -qn update 

Krótki opis użytych opcji:

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

bez większego doświadczenia CVS, jestem ciekawa, jakie opcje -qn sugerują ... – dokaspar

+0

dlaczego nie używać 'diff'? – mmcrae

19

Można krótką listę różnic wykorzystaniem diff polecenia CVS:

cvs -q diff --brief 
4

Rura go grep!

cvs -Q status | grep -i locally 
+0

Próbowałem tego i naprawdę mi się to nie podobało. Chciałbym zobaczyć ścieżkę do zmienionych plików, a nie tylko nazwy plików. Próbowałem cvs stat 2>/dev/null | grep Local -B1 -A4 | grep -vE "^ $" i było trochę lepiej, ale trochę niechlujnie i dziwacznie. –

0

Oto lista nUpewnij-perl skrypt zmodyfikowane pliki, jest ona oparta na wyżej wymieniony 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

Wykonaj cvs update plików poprzedzając ją M są zmodyfikowane pliki.

Przykład:

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

Jako alternatywę dla powszechnie wspomniano cvs update -qn, można przejść do polecenia cvs release. Ale ten jest interaktywny i prosi o potwierdzenie na końcu wyjścia (więc wystarczy przerwać!). Wyjście Normal:

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

Po pytaniu Are you sure you want to release directory '.': umieścić coś innego niż y lub Y.

1

Oto co mogę użyć:

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

wyjściowa:

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

można użyć następującego polecenia, aby uzyskać listę plików, które zmodyfikowano lokalnie

CVS -qn aktualizacji | grep "M" | awk '{print $ 2}'

Powiązane problemy