Есть ли простой способ показать в моем репозитории только те файлы, которые были добавлены, удалены или изменены локально? Я знаю, что могу набрать cvs stat и просмотреть список файлов, но это утомительно и чревато ошибками. Мне интересно, есть ли более простой способ. На всякий случай я использую CVS 1.11.17.
CVS: показать файлы, которые были локально изменены
Ответы (8)
«Пустое» обновление предоставит вам эту информацию.
cvs -qn update
Краткое описание используемых опций:
-q Cause CVS to be somewhat quiet.
-n Do not execute anything that will change the disk.
diff
?
- person Don Cheadle; 26.01.2016
Вы можете получить краткий список различий, используя команду cvs diff
:
cvs -q diff --brief
Подключите его к grep
!
cvs -Q status | grep -i locally
Вот что я использую:
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
Вот список измененных файлов скрипта 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;"
Сделайте обновление CVS. Файлы, перед которыми стоит буква M, являются измененными файлами.
Пример:
CVS Update
cvsntsrv server: Updating dat/idv
M dat/idv/conduct.idv = Modified
...
В качестве альтернативы часто упоминаемому 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
.
вы можете использовать следующую команду, чтобы получить список файлов, которые вы изменили локально
cvs -qn update | grep "M" | awk '{print $ 2}'