Hướng dẫn Gource: Biến Git Commit History thành Video Animation “cực nghệ”

Git tutorial - IT technology blog
Git tutorial - IT technology blog

Tại sao phải trực quan hóa Git History?

Ai bảo git log chỉ là những dòng text trắng đen nhàm chán? Thú thật, những dòng lệnh khô khan đó chỉ dân kỹ thuật mình mới thấy thú vị. Khi cần báo cáo tiến độ cho khách hàng hoặc trình chiếu trong buổi Year-end Party, một đoạn video animation sinh động sẽ thuyết phục hơn hẳn mọi biểu đồ tĩnh.

Gource là công cụ mã nguồn mở giúp bạn biến lịch sử commit thành một hệ sinh thái sống động. Thư mục đóng vai trò là cành, file là lá, còn các thành viên trong team là những thực thể di chuyển để xây dựng hoặc chỉnh sửa mã nguồn. Nhìn vào video, bạn sẽ thấy rõ sự bùng nổ của code vào giai đoạn nước rút hay những đợt refactor quy mô lớn với hàng ngàn tệp tin thay đổi.

Tôi từng tham gia một dự án outsource kéo dài 18 tháng với hơn 5.000 commits. Khách hàng thắc mắc tại sao giai đoạn đầu code chạy chậm. Thay vì giải thích kỹ thuật, tôi dùng Gource quay lại cảnh team đập đi xây lại toàn bộ core engine. Thấy hàng trăm file cũ bị xóa bỏ và thay thế bằng cấu trúc mới gọn gàng, khách hàng gật đầu hiểu ngay nỗ lực của team.

Cài đặt Gource nhanh gọn

Gource hỗ trợ hầu hết các nền tảng phổ biến. Việc cài đặt chỉ mất vài giây thông qua các trình quản lý gói.

Dành cho macOS

Sử dụng Homebrew là cách nhanh nhất:

brew install gource

Dành cho Linux (Ubuntu/Debian)

sudo apt-get install gource

Dành cho Windows

Bạn có thể tải file .exe trực tiếp từ GitHub của Gource hoặc dùng Chocolatey cho chuyên nghiệp:

choco install gource

Bắt đầu với những lệnh cơ bản

Để chạy Gource, bạn mở terminal, di chuyển vào thư mục gốc của dự án Git và gõ:

gource

Ngay lập tức, một cửa sổ sẽ hiện ra trình chiếu lịch sử commit từ ngày đầu tiên. Tuy nhiên, cấu hình mặc định thường có độ phân giải thấp. Tốc độ chạy cũng có thể quá nhanh hoặc quá chậm tùy vào quy mô dự án.

Dưới đây là bộ tham số tôi thường dùng để video trông chuyên nghiệp hơn:

gource -1280x720 --seconds-per-day 1 --auto-skip-seconds 1 --title "Dự án Fintech 2024"
  • -1280x720: Thiết lập độ phân giải HD chuẩn.
  • --seconds-per-day 1: Gói gọn một ngày làm việc vào 1 giây video.
  • --auto-skip-seconds 1: Tự động bỏ qua những ngày không có commit nào.
  • --title: Đưa tên dự án lên góc màn hình để nhận diện thương hiệu.

Tùy chỉnh để video thêm phần “xịn xò”

Một video Gource thô thường khá lộn xộn nếu dự án chứa nhiều file rác. Hãy áp dụng 3 mẹo sau để video tập trung vào những phần cốt lõi.

1. Lọc bỏ các thư mục “nhiễu”

Đừng để hàng ngàn file trong node_modules hay vendor làm loãng video. Hãy dùng regex để loại bỏ chúng:

gource --hide filenames,dirnames --ignore-dir "node_modules|vendor|.git"

2. Cá nhân hóa Avatar cho thành viên

Mặc định, Gource hiển thị icon hình người chung chung. Để biết ai đang “đập phá” code, hãy kết nối với Gravatar hoặc dùng ảnh cục bộ. Lưu ý: tên file ảnh phải trùng khớp với username trong Git.

gource --user-image-dir path/to/avatars/

3. Gom nhóm các tác giả (Mailmap)

Một dev có thể commit bằng cả email công ty lẫn email cá nhân. Điều này khiến Gource hiểu lầm là hai người khác nhau. Bạn hãy tạo file .mailmap ở thư mục gốc để gộp các danh tính này lại:

Tên Chính Thức <[email protected]> Tên Cũ <[email protected]>

Cách xuất Gource ra định dạng Video (MP4)

Gource không có nút “Save Video” trực tiếp. Chúng ta cần “bắn” dữ liệu sang ffmpeg để đóng gói thành file MP4. Đây là kỹ thuật tôi hay dùng để tạo clip gửi cho team marketing.

Trước tiên, hãy cài đặt ffmpeg. Sau đó chạy lệnh pipe dữ liệu sau:

gource -1920x1080 -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 18 -threads 0 project_history.mp4

Giải mã câu lệnh này:

  • -o -: Xuất hình ảnh thô ra luồng dữ liệu chuẩn (stdout).
  • -r 60: Ép tốc độ khung hình lên 60fps cho mượt mà.
  • -vcodec libx264: Sử dụng chuẩn nén H.264 phổ biến nhất hiện nay.
  • -crf 18: Giữ chất lượng video ở mức cao (số càng nhỏ, video càng nét).

Kinh nghiệm thực tế khi triển khai

Với các dự án lớn kéo dài nhiều năm, video có thể dài tới cả tiếng đồng hồ. Lời khuyên của tôi là chỉ nên tập trung vào những mốc thời gian quan trọng (milestones). Bạn có thể giới hạn thời gian bằng tham số --start-date--stop-date.

gource --start-date "2023-01-01" --stop-date "2023-12-31"

Ngoài ra, Gource còn giúp soi ra những điểm bất thường trong quy trình. Nếu thấy một vùng code chỉ có duy nhất một người tác động trong thời gian dài, đó chính là dấu hiệu của việc thiếu chia sẻ kiến thức (knowledge sharing). Nếu người đó nghỉ phép, vùng code đó sẽ trở thành “điểm mù” nguy hiểm cho cả đội ngũ.

Kết luận

Gource không chỉ là công cụ “làm màu”. Nó thổi hồn vào lịch sử dự án, giúp team nhìn lại hành trình đã qua một cách đầy cảm hứng. Hãy thử chạy nó ngay với dự án hiện tại. Chắc chắn bạn sẽ bất ngờ khi thấy thành quả lao động của mình hiện lên như một tác phẩm nghệ thuật.

Share: