Есть ли способ получить короткий статус CVS из командной строки?

StackOverflow https://stackoverflow.com/questions/211819

  •  03-07-2019
  •  | 
  •  

Вопрос

При выполнении 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)

Конечно, я мог бы создать сценарий для преобразования последнего в первый, но это кажется пустой тратой времени, поскольку cvs, очевидно, может создать первый.

Это было полезно?

Решение

Вы можете использовать флаг -n, чтобы получить выходные данные обновления без фактического обновления файлов. Вы также можете добавить -q (quiet), чтобы подавить любые сообщения сервера.

cvs -q -n update

Другие советы

@jmcnamara: Хороший совет!

И все это время я использовал этот скрипт bash:

cvs -q status "$@" | 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 = <*>; \
        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 , который пропустит обновленные файлы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top