Trong thế giới phát triển phần mềm, việc theo dõi và hiểu rõ lịch sử đóng góp của các thành viên trong dự án là cực kỳ quan trọng. Git blame là một lệnh quen thuộc giúp xác định tác giả của từng dòng code, nhưng nó chỉ dừng lại ở đó. Khi bạn cần một cái nhìn toàn diện hơn về đóng góp của các tác giả trong các dự án mã nguồn mở hoặc nội bộ, một công cụ mạnh mẽ như git-who
sẽ là lựa chọn thay thế vượt trội. Công cụ này cung cấp thông tin chi tiết, hữu ích và dễ đọc về các nhà phát triển, giúp bạn quản lý dự án hiệu quả và hiểu sâu hơn về quá trình phát triển.
git-who là gì và vì sao nó vượt trội so với git blame?
git-who
là một lệnh Git tùy chỉnh, được thiết kế để hiển thị những thông tin hữu ích và thú vị về các tác giả của các commit trong một kho lưu trữ (repository). Không giống như git blame
chỉ tập trung vào quyền tác giả từng dòng code riêng lẻ, git-who
cung cấp cái nhìn tổng quan ở cấp độ file, thư mục và toàn bộ dự án. Bạn có thể sử dụng git-who
để:
- Xác định ai là người cập nhật mã gần đây nhất.
- Phân tích những tác giả nào đã đóng góp nhiều nhất vào tổng thể dự án.
- Tìm hiểu ai đang làm việc trên các thành phần con cụ thể.
- Theo dõi lịch sử đóng góp theo thời gian, giúp bạn hình dung rõ ràng sự phát triển của dự án.
Mặc dù là một công cụ dựa trên terminal, git-who
tạo ra đầu ra hấp dẫn và dễ đọc bằng cách hiển thị dữ liệu trong các bảng được căn chỉnh đẹp mắt, cùng với việc sử dụng màu sắc để làm nổi bật số lượng dòng được thêm vào hoặc xóa đi, mang lại trải nghiệm trực quan hơn nhiều so với git blame
truyền thống.
Ảnh chụp màn hình hiển thị kết quả từ lệnh git who trong một bảng với các cột được căn chỉnh và màu sắc biểu thị số dòng được thêm vào so với số dòng bị xóa.
Hướng dẫn cài đặt và sử dụng git-who hiệu quả
Để bắt đầu sử dụng git-who
, bạn có thể lựa chọn một trong các phương pháp cài đặt sau:
Cài đặt git-who
Cách dễ nhất để cài đặt git-who
trên macOS hoặc Linux là sử dụng trình quản lý gói Homebrew:
brew install git-who
Ngoài ra, bạn cũng có thể cài đặt phần mềm từ mã nguồn hoặc tải về phiên bản nhị phân đã biên dịch sẵn từ trang phát hành của dự án trên GitHub.
Sau khi cài đặt, hãy đảm bảo rằng tệp thực thi git-who
đã có trong biến môi trường PATH của bạn. Điều này sẽ cho phép bạn sử dụng lệnh dưới dạng git who
thay vì git-who
. Sau đó, bạn có thể chạy lệnh này trong bất kỳ thư mục kho lưu trữ Git nào.
Ảnh chụp màn hình hiển thị đầu ra mặc định từ lệnh git who, với bảng các tác giả được sắp xếp theo số lượng commit của mỗi người.
Các lệnh cơ bản của git-who
git-who
hỗ trợ ba subcommand chính, mỗi subcommand cung cấp một góc nhìn khác nhau về đóng góp:
-
git who table
(mặc định): Đây là chế độ xem mặc định, hiển thị bảng tóm tắt về những người đóng góp hàng đầu, cùng với thời điểm chỉnh sửa gần nhất của họ và tổng số commit. Đây là một cái nhìn tổng quan tuyệt vời về các thành viên tích cực nhất. -
git who tree
: Lệnh này hiển thị toàn bộ cấu trúc phân cấp của kho lưu trữ, với người đóng góp hàng đầu được liệt kê bên cạnh mỗi thư mục, cùng với tổng số commit của họ. Chế độ xem này giúp bạn dễ dàng hình dung ai là người chịu trách nhiệm chính cho các phần khác nhau của dự án.Ảnh chụp màn hình hiển thị đầu ra từ lệnh git who tree, hiển thị hệ thống phân cấp file đầy đủ với tác giả đóng góp nhiều nhất bên cạnh mỗi file hoặc thư mục.
-
git who hist
(history): Chế độ xem này hiển thị biểu đồ thời gian đóng góp theo ngày, cho phép bạn theo dõi sự thay đổi của những người đóng góp theo thời gian. Đây cũng là một biểu đồ tần suất (histogram), giúp bạn nhanh chóng nhận biết các giai đoạn có nhiều commit nhất trong lịch sử dự án.
Đối với các kho lưu trữ lớn như Linux kernel, một số lệnh có thể mất nhiều thời gian để hoàn thành. Để tăng tốc độ, bạn có thể lọc kết quả bằng các tùy chọn nâng cao của git-who
.
Khám phá các tính năng nâng cao của git-who để phân tích chuyên sâu
Mặc dù các subcommand của git-who
có các thiết lập mặc định hợp lý, bạn sẽ nhận được các kết quả rất khác nhau tùy thuộc vào kích thước và cấu trúc của kho lưu trữ của bạn. Ví dụ, chạy git who tree
trong một kho lưu trữ khổng lồ sẽ tạo ra rất nhiều dòng đầu ra.
Chương trình git-who
hỗ trợ nhiều tùy chọn giúp bạn điều chỉnh hành vi và đầu ra của nó:
Lọc và tùy chỉnh kết quả
Tất cả các subcommand đều cho phép bạn sử dụng --author
để chỉ bao gồm các tác giả cụ thể và --nauthor
để loại trừ họ. Chúng cũng chấp nhận các tùy chọn --since
và --until
để giới hạn đầu ra theo ngày:
Ảnh chụp màn hình hiển thị đầu ra từ lệnh git who được lọc theo tác giả và ngày sử dụng tùy chọn –since.
Một điểm quan trọng cần lưu ý là theo mặc định, thống kê của git-who
không bao gồm các commit hợp nhất (merge commits). Điều này có thể tạo ra sự khác biệt lớn, tùy thuộc vào cách quản lý kho lưu trữ. Ví dụ, Linus Torvalds, người bảo trì chính của Linux kernel, thường bị thiếu trong thống kê mặc định của kho lưu trữ Linux của riêng ông:
Ảnh chụp màn hình hiển thị đầu ra mặc định từ git who trong kho lưu trữ Linux, không đề cập đến Linus Torvalds.
Tuy nhiên, với tư cách là người bảo trì tổng thể, Torvalds xử lý một số lượng lớn các hoạt động hợp nhất. Khi tính đến các commit hợp nhất bằng tùy chọn --merges
, ông là người đóng góp lớn nhất:
Ảnh chụp màn hình hiển thị đầu ra mặc định từ git who trong kho lưu trữ Linux, sử dụng tùy chọn –merges, cho thấy Linus Torvalds là người đóng góp hàng đầu.
Tùy chỉnh git who table
Chế độ table
mặc định sắp xếp theo tổng số commit. Bạn có thể thay đổi để sắp xếp các tác giả theo commit gần đây nhất của họ bằng tùy chọn -m
:
Ảnh chụp màn hình hiển thị đầu ra của git who table với tùy chọn -m, sắp xếp theo lần chỉnh sửa cuối cùng thay vì số lượng commit nhiều nhất.
Tùy chọn -l
tập trung vào số dòng thay đổi thay vì số commit. Nó sắp xếp theo số dòng thay đổi và hiển thị số lượng file đã thay đổi, số lượng dòng được thêm và số dòng đã xóa.
Bạn cũng có thể sắp xếp đầu ra theo số file đã thay đổi bằng -f
hoặc theo lần thay đổi đầu tiên bằng -c
.
Tùy chỉnh git who tree
Điều đầu tiên bạn có thể muốn làm với lệnh tree
là giới hạn độ sâu của nó. Nếu kho lưu trữ của bạn chứa nhiều file và thư mục, lệnh tree
mặc định sẽ tạo ra rất nhiều đầu ra. Tùy chọn -d
cho phép bạn chỉ định độ sâu, ví dụ, bạn có thể chỉ xem thông tin tác giả cho các thư mục cấp cao nhất:
Ảnh chụp màn hình hiển thị đầu ra từ lệnh git who tree với tùy chọn -d, giới hạn độ sâu của hệ thống phân cấp thư mục.
Tùy chọn -l
sẽ chọn tác giả có số dòng thay đổi nhiều nhất thay vì tác giả có nhiều commit nhất. Nó cũng chú thích mỗi file và thư mục với số lượng dòng mà mỗi tác giả đã thêm và xóa tại điểm đó:
Ảnh chụp màn hình hiển thị đầu ra từ lệnh git who tree với tùy chọn -l để chọn tác giả có số dòng thay đổi nhiều nhất thay vì số lượng commit nhiều nhất.
Tùy chỉnh git who hist
Subcommand hist
đã có một tính năng tích hợp thông minh, tự động chọn chế độ xem theo ngày, tháng hoặc năm dựa trên tuổi của kho lưu trữ:
Ảnh chụp màn hình hiển thị đầu ra từ lệnh git who hist, hiển thị một kho lưu trữ cũ và một kho lưu trữ mới, cái cũ hiển thị theo năm và cái mới hiển thị theo tháng.
Các tùy chọn --since
và --until
hoạt động rất hiệu quả với hist
, giúp bạn giới hạn khoảng thời gian báo cáo. Các tùy chọn này khá linh hoạt về định dạng chấp nhận, vì vậy bạn có thể thử nghiệm với nhiều cách khác nhau, ví dụ:
--since=2010
--since="2010-09-01 12:00:00"
--since=yesterday
--since="3 weeks ago"
--since="february 24"
Kết luận
git-who
là một công cụ mạnh mẽ, cung cấp cái nhìn sâu sắc và toàn diện hơn nhiều về đóng góp của các tác giả trong kho lưu trữ Git so với lệnh git blame
truyền thống. Từ việc xác định những người đóng góp hàng đầu, theo dõi cấu trúc dự án đến phân tích lịch sử đóng góp theo thời gian, git-who
là một bổ sung không thể thiếu cho bất kỳ nhà phát triển, quản lý dự án hoặc người làm việc với mã nguồn mở nào. Với khả năng tùy chỉnh linh hoạt và đầu ra trực quan, git-who
không chỉ giúp bạn hiểu rõ hơn về dự án của mình mà còn hỗ trợ việc quản lý và phát triển cộng đồng hiệu quả hơn. Hãy trải nghiệm git-who
ngay hôm nay và chia sẻ ý kiến của bạn về công cụ này trong phần bình luận bên dưới!