+20

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à 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\\to\\code\\repository
C:\\ffmpeg\\bin\\ffmpeg -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\n") 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: $!\n");

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)...\n";

    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é 😉

Một số video ví dụ:

Minecraft:

Homebrew:

Git:


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí