-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit.py
More file actions
35 lines (31 loc) · 947 Bytes
/
git.py
File metadata and controls
35 lines (31 loc) · 947 Bytes
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
import re
def parse_numstat(diff_output):
lines = diff_output.split("\n")
result = []
for line in lines:
parts = line.split("\t")
if len(parts) == 3:
result.append(
{
"additions": int(parts[0]) if parts[0] != "-" else None,
"deletions": int(parts[1]) if parts[1] != "-" else None,
"to": parts[2],
}
)
return result
def parse_tree(ls_tree_output):
lines = ls_tree_output.split("\n")
result = []
for line in lines:
parts = re.split(r"\s+", line.strip(), 4)
if len(parts) == 5:
result.append(
{
"mode": parts[0],
"type": parts[1],
"object": parts[2],
"size": int(parts[3]),
"file": parts[4],
}
)
return result