import subprocess
additions = 0
subtractions = 0
total = 0
def count_lines_of_code(repo_path, sincetime="2025-03-25", untiltime="2025-05-30"):
global additions
global subtractions
global total
additions = 0
subtractions = 0
total = 0
process = subprocess.Popen(['git', 'log', "--since={}".format(sincetime), "--until={}".format(untiltime) ,'--pretty=tformat:', '--numstat'], cwd=repo_path, stdout=subprocess.PIPE)
output, _ = process.communicate()
lines = output.decode('utf-8').replace("\t", " ").splitlines()
for _ in lines:
if _.split(" ")[0].isdigit():
print("##A formatted string: {}".format(_))
additions += int(_.strip(" ").split(" ")[0])
subtractions += int(_.strip(" ").split(" ")[1])
else:
print("##Ignore non formatted strings: {}".format(_))
total = additions - subtractions
return additions, subtractions, total
def count_lines_of_code_latest(repo_path):
global additions
global subtractions
global total
additions = 0
subtractions = 0
total = 0
process = subprocess.Popen(['git', 'log', '-1', '--pretty=tformat:', '--numstat'], cwd=repo_path, stdout=subprocess.PIPE)
output, _ = process.communicate()
lines = output.decode('utf-8').replace("\t", " ").splitlines()
for _ in lines:
if _.split(" ")[0].isdigit():
print("##A formatted string: {}".format(_))
additions += int(_.strip(" ").split(" ")[0])
subtractions += int(_.strip(" ").split(" ")[1])
else:
print("##Ignore non formatted strings: {}".format(_))
total = additions - subtractions
return additions, subtractions, total
repo_path = r'D:\workspace\product_code'
additions, subtractions, total = count_lines_of_code(repo_path, sincetime="2025-05-01", untiltime="2025-05-30")
print(f"Added lines: {additions}, Removed lines: {subtractions}, Total lines of code: {total}")