git-who เป็นเครื่องมือ CLI สำหรับค้นหาผู้รับผิดชอบต่อองค์ประกอบทั้งหมดหรือซับซิสเต็มย่อยของโค้ดเบส
- ต่างจาก
git blame ตรงที่ git-who ทำงานในระดับ ต้นไม้ไฟล์ เพื่อระบุผู้เขียนโค้ด
- มีซับคอมมานด์ 3 แบบ โดยแต่ละคำสั่งย่อยจะแสดงมุมมองที่แตกต่างกันเกี่ยวกับความเป็นเจ้าของใน Git repository
-
table
- เป็นค่าเริ่มต้น โดยจะแสดงตารางสรุปการมีส่วนร่วมของผู้เขียนทั้งหมดที่เคยคอมมิตใน repository
- สามารถระบุพาธเพื่อกรองเฉพาะคอมมิตที่เกี่ยวข้องกับไฟล์ในพาธนั้นได้
- สามารถระบุชื่อบรานช์, ชื่อแท็ก หรือ "commit-ish" เพื่อกรองเฉพาะคอมมิตที่เข้าถึงได้จากคอมมิตที่กำหนด
- สามารถใช้แฟล็ก
-m, -c, -l, -f เพื่อจัดเรียงตารางตามเมตริกต่าง ๆ ได้
-
tree
- แสดงต้นไม้ไฟล์ โดยแต่ละโหนดจะแสดงผู้เขียนที่มีส่วนร่วมมากที่สุดในพาธนั้น
- สามารถใช้แฟล็ก
-a เพื่อใส่คำอธิบายประกอบให้ทุกไฟล์ได้
- รองรับแฟล็ก
-l, -f, -m, -c
-
hist
- แสดงฮิสโตแกรม/ไทม์ไลน์ของกิจกรรมคอมมิต เพื่อให้เห็นประวัติการมีส่วนร่วมใน repository
- รองรับแฟล็ก
-l และ -f
- ตัวเลือกเพิ่มเติมสำหรับการกรองคอมมิต
- สามารถใช้ตัวเลือก
--author และ --nauthor เพื่อระบุผู้เขียนที่ต้องการรวมหรือตัดออก
- สามารถใช้ตัวเลือก
--since และ --until เพื่อกรองคอมมิตก่อนหรือหลังวันที่ที่กำหนด
- การแคช: เก็บข้อมูลแคชแยกตาม repository ไว้ใน
XDG_CACHE_HOME หากต้องการปิดการแคช ให้ตั้งค่า GIT_WHO_DISABLE_CACHE=1
- หากติดตั้งไบนารี
git-who ไว้ใน path ก็สามารถรัน git who ได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม หากติดตั้งด้วยชื่ออื่นหรือต้องการกำหนดแบบชัดเจน สามารถเพิ่ม alias ในการตั้งค่า Git ได้
- หากมีไฟล์
.mailmap อยู่ใน Git repository, git who จะเคารพการตั้งค่านั้นและนับคอมมิตของคนเดียวกันรวมกัน
-
เมตริก
- จำนวนคอมมิต: แสดงจำนวนคอมมิตที่แก้ไขพาธนั้น
- จำนวนไฟล์: แสดงจำนวนไฟล์ไม่ซ้ำที่ผู้เขียนคนนั้นแก้ไข
- จำนวนบรรทัดที่เพิ่ม และ จำนวนบรรทัดที่ลบ: แสดงจำนวนบรรทัดที่ถูกเพิ่มหรือลบในพาธนั้น
-
ความแตกต่างจาก git blame
git blame จะระบุคอมมิตที่นำแต่ละบรรทัดของโค้ดใน working tree เข้ามา ในขณะที่
git who จะสำรวจบางส่วนของ commit log เพื่อสรุปการมีส่วนร่วม
- ทั้งสองเครื่องมือทำงานคนละระดับกัน และให้ข้อมูลที่แตกต่างกัน
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สำหรับการวิเคราะห์ว่า "ใครเป็นคนเขียน vim" นั้น ขึ้นอยู่กับเวิร์กโฟลว์ อาจทำให้ดูเหมือนว่าผู้มีส่วนร่วมภายในมีผลงานมากกว่า
เครื่องมือนี้เจ๋งมาก ลองใช้สั้น ๆ ก่อนจบวัน
blameการดูผลงานของ Bob กับ Alice ก็ดี แต่การแสดงเจ้าของที่แท้จริงของโมดูล/ไฟล์น่าจะมีประโยชน์มากกว่าgnu tarก็เตือนว่าไม่ตรงกับรูปแบบอาร์ไคฟ์หลายคนเข้าใจ
git blameผิด มันไม่ใช่เรื่องของว่าใครเป็นคนทำ แต่เป็นเรื่องของว่าคอมมิตไหนคือสาเหตุสามารถเรียก
git-whoเป็นgit whoได้ แค่ตั้ง alias ในการตั้งค่า Git แบบ globalgit whateverจะค้นหาgit-whateverใน path แล้วรันให้เวอร์ชันบ้าน ๆ คือใช้นามแฝงว่า "nerdwars" เพื่อรัน
git shortlog -ns --no-mergesซึ่งเป็นวิธีที่ดีในการดูว่าผู้มีส่วนร่วมหลักของโปรเจกต์คือใครGitlab/Github ควรเพิ่มความสามารถในการส่งอีเมลหาเจ้าของล่าสุดของบรรทัดโค้ดที่ถูกแก้ไขโดยอัตโนมัติ เมื่อมีการส่ง merge request เข้ามา
เครื่องมือนี้ยอดเยี่ยม ใช้การทำบัญชีด้วย git-blame เพื่อติดตามปริมาณโค้ดที่ AI และมนุษย์เขียนในแต่ละรีลีสของแอป
tigเป็น TUI git frontend ที่ยอดเยี่ยม และมีซับคอมมานด์tig blameที่สวยมากสิ่งที่ขาดหายไปใน git ไม่ใช่จำนวนบรรทัดหรือจำนวนคอมมิตที่นักพัฒนาเขียน แต่เป็นเรื่องอย่าง
บางคนคอมมิตโดยใช้อีเมลสองอันที่ต่างกัน เช่น ใช้อีเมลคนละอันบนคอมพิวเตอร์ที่บ้านกับที่ทำงาน ถ้าสามารถระบุให้เป็นคนเดียวกันได้ก็น่าจะดี