명령 줄에서 짧은 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 (조용한)를 추가 할 수도 있습니다.

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 = $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 최신 파일을 건너 뛸 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top