Git log to spreadsheets
คือเป็นมนุษย์ประเภทที่ชอบลืมว่าตัวเองทำอะไรไปบ้างสำหรับแต่ละโปรเจ็คต์ ถ้าโปรเจ็คต์แบบเหมาจ่ายก็ไม่มีปัญหา แต่สำหรับงานต่อเนื่องที่ต้องคิดค่าแรงตามชั่วโมงเนี่ย เผอิญเป็นฟรีแลนซ์ทำงานอยู่บ้านเลยไม่ค่อยมีใครช่วยจำ ถ้าทำทีละโปรเจ็คต์ก็ยังพอนึกออกบ้าง แต่ถ้าหลายโปรเจ็คต์พร้อมกัน ปวดหัวน่าดู!
โชคดีที่มี git เป็นเพื่อน และโปรเจ็คต์ส่วนใหญ่ที่ทำ ใช้ git เป็น version control ก็เลยพิมพ์ลงใน terminal ตามนี้
git log --author=Sungsit --format='%ai,%cn,%s' >~/invoice-2012-02.csv
โชคร้ายนิดหน่อย บาง commit มี comma (,) อยู่ เวลา import เป็นไฟล์ spreadsheet เลยเพี้ยนเล็กน้อย พอดีใช้ LibreOffice มันให้เลือก separator ได้ เลยเปลี่ยนมาใช้ '|' ขั้นแทน เวลา import จะได้ลงถูก column ด้วยความขี้เกียจอธิบายว่าตัวเองทำอะไรไปบ้าง เวลาจะส่ง invoice เรียกเก็บเงิน ก็คิดค่าแรงสำหรับเดือนกุมภาฯ ตามนี้ (สมองผมจำอะไรย้อนหลังเกิน 2 วันไม่ค่อยได้)
git log --author=Sungsit --no-merges --after='last month' --until={2012-02-29} --reverse --format='%ai | %s' >~/invoice-2012-02.csv
อธิบาย options เพิ่มเติมนิดนึง
--author=Sungsitเพื่อกรองเฉพาะ commit ที่เราเขียน (เผอิญผมชื่อ Sungsit ก็เลยใส่แบบนั้น)--no-mergesกรอง merge messages ทิ้ง (เผอิญแต่ละโปรเจ็คต์ทำงานกันหลายคนใน branch เดียวกันgit pullจาก code คนอื่น เลยมีข้อความขยะเยอะ)--after='last month' --until={2012-02-29} --reverseเอาเฉพาะ commit ของเดือนที่แล้ว (ก.พ. 2012) และเรียงวันจากก่อนมาหลัง (ปกติ git จะเรียงจากล่าสุดไปหาอดีต)--format='%ai | %s'ระบุ format ที่ต้องการ%aiคือ เวลา%sคือ commit message>~/invoice-2012-02.csvโยนใส่ไฟล์ invoice-2012-02.csv ใน home dir ของเรา
เปิดไฟล์ invoice-2012-02.csv ด้วยโปรแกรม spreadsheet เติมชั่วโมงทำงานสำหรับแต่ละ task เข้าไป เพิ่ม column คูณ rate ของเรา ตกแต่ง header เป็น invoice ส่งเรียกเก็บเงิน!
(ตัวอย่างไฟล์ .csv ที่ import เป็น spreadsheet https://docs.google.com/spreadsh...)