Gource - Tạo video từ lịch sử github, cùng xem lại quá trình phát triển dự án
Tổng quan: Gource là OpenGL-based 3D visualisation tool. Hiểu đơn giản là một công cụ sử dụng OpenGL cho các trang như Git, svn để tạo một video tổng quan về quá trình phát triển project. Repo được hiển thị như một cây phân nhánh, thư mục gốc là trung tâm. Các thư mục là các nhánh và tệp là ...
Tổng quan:
Gource là OpenGL-based 3D visualisation tool. Hiểu đơn giản là một công cụ sử dụng OpenGL cho các trang như Git, svn để tạo một video tổng quan về quá trình phát triển project. Repo được hiển thị như một cây phân nhánh, thư mục gốc là trung tâm. Các thư mục là các nhánh và tệp là lá. Những người đóng góp cho source code sẽ xuất hiện, "bắn laze" vào tệp, thư mục mà họ đã tác động vào.
Gource sử dụng OpenGL để render video và vga phải hỗ trợ 3D accelerated (theo mình test thì máy công ty chạy ngon).
Cài đặt:
Ubuntu:
sudo apt-get update sudo apt-get install gource
Window: Các bạn có thể vào link này để tải: Home page
Mac: brew install gource
Nếu có lỗi gì các bạn thử cài thêm ffmpeg nhé, đây là một tool để render video rất nhanh, nhiều options nhưng khá là khó dùng, Gource cũng sử dụng cái này để render ra video.
Chạy:
Để chạy Gource thì các bạn mở terminal/cmd lên gõ lệnh gource . nhé, nhớ cd vào thư mục project trước và project phải có thư mục .git
Một số tùy chọn mà các bạn có thể cần:
- --start-date 'YYYY-MM-DD hh:mm:ss +tz'
- --stop-date 'YYYY-MM-DD hh:mm:ss +tz'
- --logo IMAGE
- --title TITLE
- --git-branch Các bạn có thể tham khảo thêm các options khác tại đây: Github
Quay video:
Gource cũng hỗ trợ quay lại video được xuất ra, nhưng các bạn nên để ý là khá nặng đó.
Để sử dụng ffmpeg quay lại video xuất ra, các bạn dùng câu lệnh gource -1280x720 -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 gource.mp4
Độ phân giải video: 1280x720 Số khung hình / giây FPS: 60 Tên file output: gource.map
gource -1280x720 -o - lệnh này sẽ xuất ra một file gource.ppm và đoạn sau sẽ dùng file này cover qua đuôi mp4.
Tuy nhiên một số phiên bản ubuntu không bật sẵn x264 trong ffmpeg nên bạn cần bật nó lên, tham khảo link này: enable libx264 support on Ubuntu
Trên window thì câu lệnh có "hơi" lằng nhằng hơn:
gource -1280x720 -o gource.ppm C:path ocode epository C:ffmpeginffmpeg -y -r 60 -f image2pipe -vcodec ppm -i gource.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 gource.x264.avi
Đồng bộ Gravatar:
trước hết các bạn hãy cd vào thư mục project, sau đó chạy đoạn script Perl sau:
#!/usr/bin/perl #fetch Gravatars use strict; use warnings; use LWP::Simple; use Digest::MD5 qw(md5_hex); my $size = 90; my $output_dir = '.git/avatar'; die("no .git/ directory found in current path ") unless -d '.git'; mkdir($output_dir) unless -d $output_dir; open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $! "); my %processed_authors; while(<GITLOG>) { chomp; my($email, $author) = split(/|/, $_); next if $processed_authors{$author}++; my $author_image_file = $output_dir . '/' . $author . '.png'; #skip images we have next if -e $author_image_file; #try and fetch image my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size; warn "fetching image for '$author' $email ($grav_url)... "; my $rc = getstore($grav_url, $author_image_file); sleep(1); if($rc != 200) { unlink($author_image_file); next; } } close GITLOG;
lệnh trên sẽ kéo ảnh avatar tài khoản github của những những người tham gia vào dự án về thư mục .git/avatar
sau đó khi chạy lệnh gource thì thêm option này vào --user-image-dir .git/avatar/
Chúc các bạn có những phút giây thư giãn sau trong giờ làm việc, đừng quên upvote nếu các bạn thấy nó chạy được nhé