`git who` – โค้ดนี้ใครเป็นคนเขียน?!
(github.com/sinclairtarget)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 blamegit 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 ไม่ใช่จำนวนบรรทัดหรือจำนวนคอมมิตที่นักพัฒนาเขียน แต่เป็นเรื่องอย่าง
บางคนคอมมิตโดยใช้อีเมลสองอันที่ต่างกัน เช่น ใช้อีเมลคนละอันบนคอมพิวเตอร์ที่บ้านกับที่ทำงาน ถ้าสามารถระบุให้เป็นคนเดียวกันได้ก็น่าจะดี