CVS: показать файлы, которые были локально изменены

Есть ли простой способ показать в моем репозитории только те файлы, которые были добавлены, удалены или изменены локально? Я знаю, что могу набрать cvs stat и просмотреть список файлов, но это утомительно и чревато ошибками. Мне интересно, есть ли более простой способ. На всякий случай я использую CVS 1.11.17.


cvs
person Elias Zamaria    schedule 16.01.2010    source источник


Ответы (8)


«Пустое» обновление предоставит вам эту информацию.

cvs -qn update

Краткое описание используемых опций:

-q      Cause CVS to be somewhat quiet.
-n      Do not execute anything that will change the disk.
person CB Bailey    schedule 16.01.2010
comment
почему бы не использовать diff? - person Don Cheadle; 26.01.2016

Вы можете получить краткий список различий, используя команду cvs diff:

cvs -q diff --brief
person martin clayton    schedule 16.01.2010

Подключите его к grep!

cvs -Q status | grep -i locally
person Ryan Joy    schedule 16.01.2010
comment
Я пробовал это, и мне это не очень понравилось. Я хотел бы видеть путь к измененным файлам, а не только имена файлов. Я попробовал cvs stat 2 ›/ dev / null | grep Local -B1 -A4 | grep -vE ^ $, и это было немного лучше, но немного беспорядочно и необычно. - person Elias Zamaria; 16.01.2010

Вот что я использую:

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

Вывод:

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
person cppRohit    schedule 18.06.2014

Вот список измененных файлов скрипта nmake-perl, он основан на вышеупомянутом cvs update -qn:

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

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

Сделайте обновление CVS. Файлы, перед которыми стоит буква M, являются измененными файлами.

Пример:

CVS Update
cvsntsrv server: Updating dat/idv
M dat/idv/conduct.idv  = Modified
...
person Andre    schedule 10.09.2012

В качестве альтернативы часто упоминаемому cvs update -qn вы можете использовать команду cvs release. Но этот интерактивный и запрашивает подтверждение в конце вывода (так что вам просто нужно его прервать!). Нормальный выход:

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

После вопроса Are you sure you want to release directory '.': вы указываете что-то отличное от y или Y.

person Knight of Ni    schedule 23.08.2013

вы можете использовать следующую команду, чтобы получить список файлов, которые вы изменили локально

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

person Ram    schedule 10.10.2017