Existe uma maneira de obter um status CVS curto de linha de comando?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Ao fazer uma cvs update, você obter um bom resumo do estado do repositório, por exemplo:

M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt

Existe uma maneira de obter isso sem realmente atualizar? Eu sei que há cvs status, mas este é o caminho para detalhado:

===================================================================
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)

Eu poderia, claro, fazer um script para fazer a transformação do último para o primeiro, mas parece um desperdício de tempo desde cvs pode, obviamente, produzem o primeiro.

Foi útil?

Solução

Você pode usar a opção -n para obter a saída de atualização sem realmente atualizar os arquivos. Você também pode adicionar q (silencioso) para suprimir todas as mensagens do servidor.

cvs -q -n update

Outras dicas

@jmcnamara: Boa dica

E todo esse tempo eu tenho usado este script bash:

cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'

Eu tenho alguns aliases, que pode ser útil para alguém:

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'

Isto irá exibir apenas os nomes dos arquivos e seu status, ignora todos os arquivos up-to-date, remover todos os arquivos de projeto eclipse e objetos compartilhados e também imprimir as linhas em cores diferentes, dependendo do estado (por exemplo, eu tenho de laranja para modificado localmente; vermelho para arquivos, precisando de fusão; verde para adicionado localmente, etc)

Se você estiver usando CVSNT você também pode simplesmente fazer cvs status -q que também irá produzir muito mais breve do que a saída do comando status regulares (também apenas uma linha por arquivo). Com versões mais recentes que você mesmo pode fazer cvs status -qq que irá ignorar os arquivos up-to-date.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top