'Jquery EasyUI'에 해당되는 글 1건

  1. Javascript로 만드는 CVS 로그 파서.

Javascript로 만드는 CVS 로그 파서.

업무상 소스의 버전관리 소프트웨어로 CVS를 사용합니다.

( 남들은 SVN 이나 git 를 사용하던데, 장비가 구형 sun 장비다 보니.. )


개발 과정에서 commit을 날리다보면, 내가 무슨 파일을 수정했는지 잊을 때가 있습니다.

개발 건별 패치리스트를 작성할 수 있도록 웹페이지를 하나 만들기로 했습니다.


[ 설계 ]

  1. cvs log 명령을 실행하는 shell script를 작성한다.

  2. Shell Script 를 실행하여 로그를 읽어 전달하는 jsp 파일을 작성한다.

  3. html에서 jsp를 호출 하고, cvs log를 파싱하여 웹 페이지에 보여준다.



[ 개발 ]

1. shell script - ( cvs_log.sh )


#!/usr/bin/ksh

cd $1
cvs log -N -S -d ">=$2"  2>& 1 | grep -v "^cvs log" | grep -v "^?"


파라미터로 이동할 cvs 디렉토리와 검색할 날짜를 받습니다.


cvs log -N -S -d ">=2013-06-07"

-. 위 명령은 2013/06/07이후 수정된 파일에 대한 log를 출력해 줍니다.


2>& 1 

-. 위 내용은 STDERR을 STDOUT으로 리다이렉션 합니다.


grep -v "^cvs log" | grep -v "^?"

-. 위 명령은 불필요한 로그를 제거 합니다.



2. shell을 실행할 jsp - ( cvsLog.jsp )

소스 보기


jsp 소스는 간단 합니다.

ProcessBuilder, Process 클래스를 이용하여 실행 하고, StreamReader 클래스로 출력된 로그를 입력받습니다. 



3. html 파일 - ( patchList.html )


cvs log는 아래와 형식으로 남습니다.


cvs log 포멧 보기


내용을 보면 특정 패턴이 있는 것을 알 수 있습니다.



-. 로그를 파싱하여, json 객체에 담는 javascript는 아래와 같습니다.


소스 보기


String 검색은 정규식을 사용했습니다.


-. cvs log를 위 함수에 파라미터에 넣고 실행하면, json 객체를 return 합니다.

    chrome의 javascript console에서 확인 하면 아래와 같습니다.




-. 완성된 cvs 파서 테스트용 html을 받으려면, 아래 파일을 다른이름으로 저장 하세요.


cvs.html



[ 추가 작업 ]

이렇게 하면 패치 리스트 작성에 문제 있습니다.

실무에서는 개발건이 많기 때문에, 날짜로만 검색하게 되면 불필요한 파일들이 포함 됩니다.


특정 개발건만 구분 하기 위해, 소스를 commit 할때, 아래와 같은 포멧으로 comment를 작성합니다.

duid: D0000145

title: 테스트 타이틀 입니다.

comment: 이런이런 내용을

블라블라 수정한다.


개발 건 마다 uniqe한 ID를 발급하여 할당 하고, 할당한 id를 검색 조건에 포함 하면, 원하는 개발 건으로 수정된 파일 리스트를 얻을 수 있습니다.


리스트를 멋있게 보여주기 위해 Jquery EasyUI를 사용 했습니다.

이것 저것 끼워 넣느라 소스가 좀 길어 졌지만, 깔끔하게 결과가 잘 나오네요.

 

최종 소스는 아래와 같습니다.


소스 보기