Seongsiks

Being A DevOpser. Powered by
Obtvse, highlight.js, theme toc Creative Commons License
Seongsiks Twitter Github Email
DevOps Ruby On Rails Chef Projects Misc Movies & Drama ME

Gource - 코드베이스 시각화툴

요즘 약간의 슬랙이 생겨서 예전부터 해보고 싶었던 gource를 해보았다.

grource란?

디렉토리를 줄기로 파일을 잎사귀로 하는 디렉토리 구조를 개발자가 생성하거나 편집한 내용을 시각화 해주는 라이브러리. git, mercurial, bazaar, svn에서 동작 https://github.com/acaudwell/Gource

데모

내가 만든 영상

설치법

Mac with brew

$ brew install gource

Mac or linux without brew

비추... 걍 맥에서 하자..

$ yum install -y libsdl2-dev libsdl2-image-dev libpcre3-dev libfreetype6-dev libglew-dev libglm-dev libboost-filesystem-dev libpng12-dev

의존성은 다음과 같음

  • SDL 2.0 (libsdl2-dev)
  • SDL Image 2.0 (libsdl2-image-dev)
  • PCRE (libpcre3-dev)
  • Freetype 2 (libfreetype6-dev)
  • GLEW (libglew-dev)
  • GLM >= 0.9.3 (libglm-dev)
  • Boost Filesystem >= 1.46 (libboost-filesystem-dev)
  • PNG >= 1.2 (libpng12-dev)
  • SDL 2.0이 설치가 안되면 1.2로 설치해야하는데, 그럼 SDL Image도 같이 1.2로 낮춰줘야함.

사용법

코드가 있는 디렉토리 루트로 이동해서

$ gource

옵션을 주고 싶으면 아래와 같이 준다. 예제는 0.01초를 하루로 하여 동영상이 생성되며 0.1초(10일)동안 아무런 작업이 없으면 다음 커밋으로 넘어가며 25프래임 레이트로 모든 사용자가 보이고, 해상도는 1280x720으로 해서 gource.ppm이라는 파일을 생성하게 된다.

$ gource -s 0.01 --auto-skip-seconds 0.1 --file-idle-time 500 --disable-progress --output-framerate 25 --highlight-users -1280x720 --output-ppm-stream gource.ppm
 -s, --seconds-per-day SECONDS
            Speed of simulation in seconds per day.

 -a, --auto-skip-seconds SECONDS
            Skip to next entry if nothing happens for a number of seconds.

 -i, --file-idle-time SECONDS
            Time in seconds files remain idle before they are removed or 0
            for no limit.

 --disable-progress
            disable progress widget

 -r, --output-framerate FPS
            Framerate of output (25,30,60). Used with --output-ppm-stream.

 --highlight-users
            Highlight the names of all users.

 -o, --output-ppm-stream FILE
            Output a PPM image stream to a file ('-' for STDOUT).

            This will automatically hide the progress bar initially and
            enable 'stop-at-end' unless other behaviour is specified.

이렇게 생성된 ppm파일은 용량이 굉장히 크고(10개월짜리프로젝트가 4기가 정도) 표준 동영상 파일이 아니므로 ffmpeg을 이용해서 x264코덱 동영상으로 변환해야한다.

ffmpeg -y -r 25 -f image2pipe -vcodec ppm -i gource.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 devopser.mp4

이때 중간에 파일을 생성하지 않고 바로 동영상으로도 만들 수 있는데 이때는 linux 파이프라인 |을 이용하면된다.

gource -s 0.01 --auto-skip-seconds 0.1 --file-idle-time 500 --disable-progress --output-framerate 25 --highlight-users -1280x720 --output-ppm-stream - | ffmpeg -y -r 25 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 topview.mp4
comments powered by Disqus
Back to Misc