유용한 CVS 관련 alias 모음(csh용)
프로그래머에게 CVS는 상당히 유용한 툴이다. 프로그램의 소스코드의 버전 관리를 손으로 한다는 건, 돌도끼 들고 전쟁터에 나간다는 것과 동일하기 때문에 적절한 도구를 선택하는 것이 프로그래머의 생산성을 높이고 안전한 프로그래밍에 도움을 준다.
그런데 CVS 명령은 편하지가 않다. 그래서 몇 년간의 경험을 모아 alias를 만들어놓고 쓰고 있는데 상당히 편하게 CVS를 이용하고 있다고 생각해서 주위 사람들한테 알려주고 있다. 하지만 alias를 알려줘도 떠먹여주지 않으면 쓰지 못하는 사람들도 여전히 있다.
1. cvsdiff
현재 작업 디렉토리 하위에 존재하는 CVS repository의 원본과 다른 파일의 이름을 목록으로 출력한다.
alias cvsdiff ‘cvs diff |& grep ^Index:’
2. cvsdfr
특정 파일의 최신 버전과 바로 직전 버전의 차이(마지막 변경 사항)를 diff로 보여준다. 파일 이름을 argument로 준다.
alias cvsdfr ‘cvs diff -Bb -r `cvs log \!* | grep ^head: | cut -c7-` -r `cvs log \!* | grep ^revision | head -2 | tail -1 | cut -c10-` \!*’
3. cdiffb
특정 파일을 diff할 때 white space의 변화를 무시하고 보여준다. 파일 이름을 argument로 준다.
alias cdiffb ‘cvs diff -Bb \!*’
이 alias들을 .cshrc에 저장하고 source ~/.cshrc를 실행하면 그 이후부터 사용가능하다. CVS로 저장하는 모듈의 최상위 디렉토리로 이동하여 cvs up을 실행하고 cvsdiff를 실행한다. 그러면 conflict가 나거나 여전히 CVS repository의 원본과 다른 파일에 대한 목록이 출력되므로, 프로그래머가 주의를 기울여야 하는 파일에 대한 정보를 얻을 수 있다.
CVS repository의 원본과 다른 파일이 어떻게 다른 지 알고 싶다면 cdiffb test.c라고 실행하면 된다.
CVS repository와 다르진 않지만 다른 누군가가 특정 파일을 변경한 사항이 있다는 것을 알았다면, 자신이 변경한 게 아니므로 최종 변경 사항을 알고 싶을 수 있다. 이런 경우, cvsdfr test.c와 같이 실행해보면 된다.
기타 유용한 alias들
1. retags
현재 작업 디렉토리에 emacs용 TAGS 파일을 만들어주는 alias이다.
alias retags ‘/bin/rm -rf ./TAGS; find . \( -name “*.[lych] -o -name “*.java” \) -exec etags –append “{}” \;’
2. pheap
프로세스가 현재 사용하고 있는 heap과 stack의 크기를 출력해주는 명령이다. 프로세스 ID를 argument로 준다.
alias pheap ‘pmap -x \!* | perl -ne “print if /heap|stack/;”‘