Ответ 1
Вы можете использовать флаг -n для получения вывода обновления без фактического обновления файлов. Вы также можете добавить -q (quiet) для подавления любых сообщений сервера.
cvs -q -n update
При выполнении cvs update
вы получаете хорошее резюме состояния репозитория, например:
M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt
Есть ли способ получить это без фактического обновления? Я знаю, что есть cvs status
, но это способ подробного:
===================================================================
File: file6.txt Status: Up-to-date
Working revision: 1.2
Repository revision: 1.2 /var/cvs/cvsroot/file6.txt,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Я мог бы, конечно, сделать script, чтобы сделать переход от последнего к первому, но это кажется пустой тратой времени, поскольку cvs, очевидно, может произвести первое.
Вы можете использовать флаг -n для получения вывода обновления без фактического обновления файлов. Вы также можете добавить -q (quiet) для подавления любых сообщений сервера.
cvs -q -n update
@jmcnamara: Хороший совет!
И все это время я использовал этот bash script:
cvs -q status "[email protected]" | grep '^[?F]' | grep -v 'Up-to-date'
У меня есть некоторые псевдонимы, которые могут быть полезны для кого-то:
alias cvsstatus_command='cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | \
grep -v "\.so" | grep -v "\.[c]*project"'
alias cvsstatus_color='nawk '"'"'BEGIN \
{ \
arr["Needs Merge"] = "0;31"; \
arr["Needs Patch"] = "1;31"; \
arr["conflicts"] = "1;33"; \
arr["Locally Modified"] = "0;33"; \
arr["Locally Added"] = "0;32" \
} \
{ \
l = $0; \
for (pattern in arr) { \
gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
} \
print l; \
}'"'"
alias cvsstatus='cvsstatus_command | cvsstatus_color'
Здесь будут отображаться только имена файлов и их статус, игнорировать все обновленные файлы, удалять все файлы проекта eclipse и общие объекты, а также печатать строки разных цветов в зависимости от состояния (например, у меня оранжевый для локально модифицированного, красный для файлов, нуждающихся в слиянии, зеленый для локального добавления и т.д.)
Если вы используете CVSNT, вы также можете просто сделать cvs status -q
, который также будет выдавать гораздо более короткий результат, чем команда обычного статуса (также одна строка для каждого файла). В более поздних версиях вы даже можете сделать cvs status -qq
, который будет пропускать обновленные файлы.