-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgitrepostats.py
46 lines (35 loc) · 1.33 KB
/
gitrepostats.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
import subprocess
display_users_cmd = "git log --pretty=format:\" %an \""
def run_command(command):
popen = subprocess.Popen(command, stdout=subprocess.PIPE)
lines_iterator = iter(popen.stdout.readline, b"")
return lines_iterator;
commiters_list = []
commiters_iterator = run_command(display_users_cmd)
for line in commiters_iterator:
commiters_list.append(line.strip().decode('utf-8'))
commiters = set(commiters_list)
lines_added_by_commiter = {}
lines_deleted_by_commiter = {}
for commiter in commiters:
commit_lines = run_command("git log --author=\""+commiter+"\" --pretty=tformat: --numstat")
lines_added = 0
lines_deleted = 0
for commit_line in commit_lines:
line_result = commit_line.split()
if line_result:
if "-" not in line_result[0]:
lines_added += int(line_result[0])
if "-" not in line_result[1]:
lines_deleted += int(line_result[1])
lines_added_by_commiter[commiter] = lines_added
lines_deleted_by_commiter[commiter] = lines_deleted
commiters = sorted(commiters)
for commiter in commiters:
print(commiter)
print("Lines added: " + str(lines_added_by_commiter[commiter]))
print("Lines deleted: " + str(lines_deleted_by_commiter[commiter]))
subtraction = lines_added_by_commiter[commiter] - lines_deleted_by_commiter[commiter]
print("Added-Deleted: " + str(subtraction))
print("\n")