2013-11-04 14 views
16

Tôi muốn vẽ đồ thị số dòng mới của mã được viết mỗi giờ trong suốt cả ngày.GIT - Xác định # dòng mã được viết mỗi giờ (cam kết & không cam kết)

Tôi biết về git diff, git log và chúng rất mạnh để xác định tổng số dòng được cam kết cho chi nhánh. Tùy chọn --since = "7am" thực sự tuyệt vời.

Một số các lệnh git Tôi đang sử dụng là:

Tổng # của dòng

git log --numstat --pretty="%H" master | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}' 

# dòng bổ sung trong ngành devel so với chủ

git log --numstat --pretty="%H" master..devel | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}' 

# dòng từ một thời điểm trong ngày

git log --since="7am" --format=format: --numstat | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("%d, -%d\n", plus, minus)}' 

# dòng hiện bị giam

git diff --stat | tail -1 | awk '{print $4}' 

Tôi đã đấu tranh mặc dù với đến với một cách để theo dõi # dòng mới được viết trong giờ vừa qua bao gồm những thay đổi không bị giam, trên tất cả chi nhánh trong repo hiện tại.

Đây có thể là vấn đề về toán học.

Các Câu hỏi:

  • Làm thế nào tôi có thể xác định số tiền chính xác của dòng văn bản trong giờ vừa qua trên tất cả các chi nhánh, bao gồm những thay đổi không bị giam.

Gotchas/Kịch bản:

  • +200 bị giam lúc 7 giờ tối là 200 dòng mới bằng văn bản. +250 không được cam kết lúc 8 giờ tối chỉ có 50 dòng mới được viết trong giờ qua.
  • +200 không được cam kết lúc 7 giờ tối là 200 dòng mới được viết. Lúc 8 giờ tối, chúng tôi cam kết 100 dòng và sau đó viết thêm 50 dòng mới. Bây giờ +150 hiển thị là không được cam kết, nhưng chúng tôi sẽ cần phải xác định rằng chỉ có 50 dòng mới được viết trong giờ qua. So sánh số liệu thống kê cam kết và không cam kết.
  • +200 không được cam kết lúc 7 giờ tối. Lúc 7:30 tối, chúng tôi viết thêm 500 dòng mới và cam kết. Vào lúc 8 giờ tối, chúng tôi viết thêm 100 dòng mới, do đó hiển thị +300 là không được cam kết. Chúng ta nên kết thúc với 600 dòng mới được viết trong giờ trước.
+1

Vì Gotchas bạn đề cập đến, bạn có thể phải đi với một giải pháp lưu trữ kết quả chạy cuối cùng (trong một tệp, DB, trong kho lưu trữ với 'git config', v.v.) và sau đó so sánh kết quả của thời gian này đối với họ. Các tùy chọn lưu trữ đơn giản nhất để giữ giá trị cuối cùng có lẽ là 'git config', nhưng vì bạn muốn giữ dữ liệu lịch sử thành đồ thị, bạn có thể muốn có một cơ sở dữ liệu đơn giản.Nếu bạn đã có một máy chủ cơ sở dữ liệu đang chạy, bạn có thể sử dụng nó, hoặc bạn có thể sử dụng một DB dựa trên tệp như SQLite. –

+0

Đúng, có một cơ sở dữ liệu MySQL để lưu trữ tổng số dòng mã được thêm vào, và số dòng được kết hợp trong giờ qua. Tôi vẫn còn một chút không chắc chắn làm thế nào để tiếp cận đánh giá các dòng mã không được cam kết mà không cần đếm đôi nó. –

+1

So sánh các dòng không được cam kết từ lần chạy này với tổng số không được cam kết từ lần chạy cuối cùng và được cam kết từ lần chạy này. Sự khác biệt sẽ là số lượng các dòng mới. Ví dụ đầu tiên của bạn: 250 + 0 - 200 = 50. Ví dụ thứ hai: 150 + 100 - 200 = 50. Đối với ví dụ thứ hai, 300 + 500 - 200 = 600. –

Trả lời

2

Có một công cụ gitstats có thể cung cấp cho bạn Lines of Code theo ngày. Có lẽ bạn có thể tinh chỉnh một chút mã (được viết bằng python) để cho anh ta tạo ra các số liệu thống kê hàng giờ.