git-who là một công cụ CLI để tìm người chịu trách nhiệm cho toàn bộ thành phần hoặc hệ thống con trong codebase
- Khác với
git blame, git-who hoạt động ở cấp cây thư mục tệp để xác định tác giả của mã
- Công cụ cung cấp ba subcommand, và mỗi lệnh con mang đến một góc nhìn khác nhau về quyền tác giả trong kho Git
-
table
- Mặc định, in ra một bảng tóm tắt đóng góp của mọi tác giả đã commit trong kho
- Có thể chỉ định đường dẫn để chỉ lọc các commit liên quan đến tệp trong đường dẫn cụ thể đó
- Có thể chỉ định tên nhánh, tên tag hoặc
commit-ish để chỉ lọc các commit có thể truy cập từ một commit cụ thể
- Có thể dùng các cờ
-m, -c, -l, -f để sắp xếp bảng theo nhiều metric khác nhau
-
tree
- In ra cây tệp, trong đó mỗi nút hiển thị tác giả đóng góp nhiều nhất tại đường dẫn tương ứng
- Có thể dùng cờ
-a để chú thích tất cả các tệp
- Hỗ trợ các cờ
-l, -f, -m, -c
-
hist
- In ra histogram/dòng thời gian của hoạt động commit để thể hiện lịch sử đóng góp vào kho
- Hỗ trợ các cờ
-l và -f.
- Các tùy chọn bổ sung để lọc commit
- Có thể chỉ định tác giả cần bao gồm hoặc loại trừ bằng các tùy chọn
--author và --nauthor
- Có thể lọc commit trước hoặc sau một ngày cụ thể bằng các tùy chọn
--since và --until
- Caching: lưu cache dữ liệu theo từng kho trong
XDG_CACHE_HOME. Để tắt cache, đặt GIT_WHO_DISABLE_CACHE=1
- Nếu cài binary
git-who vào PATH, bạn có thể chạy git who mà không cần thiết lập thêm. Nếu cài với tên khác hoặc muốn cấu hình rõ ràng, có thể thêm alias vào cấu hình Git
- Nếu tệp
.mailmap tồn tại trong kho Git, git who sẽ tôn trọng nó và gộp các commit của cùng một người lại với nhau
-
Metric
- Số commit: biểu thị số commit đã chỉnh sửa đường dẫn
- Số tệp: biểu thị số tệp duy nhất mà tác giả đã chỉnh sửa
- Số dòng thêm vào và số dòng bị xóa: biểu thị số dòng được thêm vào hoặc xóa khỏi đường dẫn
-
Khác biệt với git blame
git blame xác định commit đã đưa vào từng dòng dựa trên mã trong working tree, trong khi
git who duyệt qua một phần của commit log để tổng hợp đóng góp
- Hai công cụ hoạt động ở các cấp độ khác nhau và cung cấp những loại thông tin khác nhau
1 bình luận
Ý kiến trên Hacker News
Liên quan đến phân tích "ai đã viết vim", tùy theo quy trình làm việc mà có thể trông như các cộng tác viên nội bộ đã đóng góp nhiều hơn
Công cụ này thực sự rất tuyệt. Tôi đã thử dùng nhanh trước khi kết thúc ngày làm việc
Nhiều người đang hiểu sai về git blame. Nó không phải là ai đã làm, mà là commit nào là nguyên nhân
Có thể gọi
git-whobằnggit who. Chỉ cần thiết lập bí danh trong cấu hình Git toàn cụcgit whateversẽ tìmgit-whatevertrong đường dẫn rồi chạy nóVới phiên bản cấu hình thấp, tôi dùng bí danh "nerdwars" để chạy "git shortlog -ns --no-merges". Đây là cách tốt để nắm được những người đóng góp chính của một dự án
Gitlab/Github nên bổ sung tính năng tự động gửi email cho người viết cuối cùng của các dòng mã đã sửa khi một merge request được gửi lên
Công cụ này rất xuất sắc. Tôi dùng kiểu hạch toán git-blame để theo dõi lượng mã do AI và con người viết trong mỗi bản phát hành của ứng dụng
tiglà một frontend Git dạng TUI rất hay, và có subcommandtig blamerất đẹpThứ git còn thiếu không phải là số dòng hay số commit mà lập trình viên đã viết. Đúng hơn là những thứ như sau
Một số người commit bằng hai địa chỉ email khác nhau. Ví dụ, họ dùng một email trên máy ở nhà và một email khác trên máy công ty. Sẽ rất tốt nếu có thể định nghĩa chúng là cùng một người