ทำ Git visualize ตลอด 1 ปีที่ผ่านมาด้วย Gource
2 min read
Table of Contents
ปกติช่วงสิ้นปีหรือช่วงปีใหม่เราก็มักจะทำ Year review กันใช่ไหมละ ผมเองก็มีทำๆ บ้างจะได้เป็นการทบทวนตัวเองว่าตลอด 1 ปีที่ผ่านมาได้ทำอะไรไปบ้าง ซึ่งตัวผมนั้นอยากเห็นด้วยว่าโปรเจคที่ทำมาตลอด 1 ปีได้ทำอะไรไปเยอะแค่ไหนและมีการเติบโตจากเดิมไปเท่าไร แต่มานั่งนึกเอาเองมันก็ดูจะไม่ค่อยเห็นภาพเท่าไร เลยนึกขึ้นได้ว่าใช้ Gource ทำ visualization ให้ดีกว่าจะได้เห็นเป็นภาพเลย แถมเอาไปโชว์ให้ทีมดูได้ด้วย
Gource เป็นโปรแกรมที่จะอ่านประวัติจาก SVC Repo (เช่น Git, Mercurial, SVN เป็นต้น) แล้วเอามาวาดเป็นต้นไม้แสดงให้ดูตามโฟลเดอร์และไฟล์ในโปรเจค นอกจากนี้ยังเล่นเป็นไทมไลน์ให้ดูว่าช่วงนั้นมีอะไรเกิดขึ้นบ้างและใครทำอะไรตรงไหนไป
ติดตั้ง
วิธีติดตั้ง gource นั้นง่ายมากๆ เราสามารถลงผ่าน package manager ด้วย command line เพียงบรรทัดเดียวได้เลยทั้ง macOS และ Linux รวมถึง Windows 11 หรือ Windows 10 ที่ลง winget ไว้แล้ว ก็สามารถใช้ command ติดตั้งตามด้านล่างได้เลย
Winget (Windows 11 / Windows 10)
winget install gource
Homebrew (macOS)
brew install gource
Debian / Ubuntu
sudo apt install gource
Arch linux
pacman -S gource
ถ้าใครไม่อยากลงผ่าน command line ก็สามารถโหลดตัวติดตั้งจากเว็บไซต์หลักได้เลย gource.io
วิธีใช้งาน
ในส่วนวิธีใช้งานก็ง่ายๆ ไม่มีอะไรซับซ้อนเลย เริ่มจากไปที่โฟลเดอร์โปรเจคของเราก่อน
cd ~/myporject
จากนั้นรัน gource
gource
ตู้มม!! ก็จะมีหน้าต่างเด้งขึ้นมาให้เราดู
แต่ว่ามันเอามาทั้งหมดเลยตั้งแต่ตอนสร้าง repo มาจนถึงช่วงปัจจุบันเลย ซึ่งผมอยากได้แค่ช่วงของ 1 ปีที่แล้วเท่านั้น เลยต้องกำหนดช่วงเวลาให้มัน
gource --start-date "2021-01-01" --stop-date "2021-12-31"
โดยที่
---start-date "YYYY-MM-DD"
กำหนดวันเริ่มต้น ในที่นี้คือ วันที่ 1 มกราคม ค.ศ. 2021--stop-date "YYYY-MM-DD"
กำหนดวันสุดท้าย ในที่นี้คือ วันที่ 31 ธันวาคม ค.ศ. 2021
เท่านี้ gource จะไล่ไทมไลน์ให้เราแค่ในช่วงที่เรากำหนดไว้แล้วละ
แต่ว่าถ้าช่วงไหนไม่ได้มี commit เลย gource ก็จะข้ามช่วงนั้นไปให้อัตโนมัติ ถ้าใครไม่อยากให้ข้ามสามารถปิดด้วย flag --disable-auto-skip
gource --disable-auto-skip
แล้วถ้ารู้สึกว่ามันช้าไปเราสามารถปรับความเร็วได้ด้วย --time-scale <scale>
ซึ่งปรับได้ตั้งแต่ 1.0 - 4.0 (ค่าเริ่มต้นอยู่ที่ 1.0)
gource --time-scale 4
หน้าจอเล็กไปก็ปรับได้ด้วย -<WIDTH>x<HIEGHT>
gource -1920x1080
หรือจะปรับเต็มจอไปเลยก็ใส่ --fullscreen
gource --fullscreen
จริงๆ ยังมี option ให้ปรับได้อีกเยอะ แนะนำให้ลองอ่านเพิ่มในวิกิ
สำหรับหนึ่งปีใช้แค่นี้ก็พอแล้ว ที่เหลือก็แค่อัดหน้าจอเราก็จะได้ visualize ตลอด 1 ปีที่ผ่านมาแล้ว
gource --start-date "2021-01-01" --stop-date "2021-12-31" --time-scale 4
(อันนี้เป็นวิดีโอประกอบเฉยๆ นะ ผมเอาของจริงมาโชว์ให้ดูไม่ได้)
FFmpeg
ใครที่มี ffmpeg อยู่แล้ว เราสามารถเอามาใช้เรนเดอร์วิดีโอออกมาเป็นไฟล์ให้เราได้เลยจะได้ไม่ต้องมาอัดหน้าจอเอง
gource --start-date "2021-01-01" --stop-date "2021-12-31" --time-scale 4 -1980x1080 | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 gource.mp4