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:

    Nguồn: Viblo

Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới LaptrinhX, vui lòng đợi một lúc để chúng tôi thử kết nối lại.