Вот мой код, который поможет. Это мой первый пост здесь, и я всегда могу добавить больше кода, если контекста недостаточно.
Здесь я получаю git-коммиты для репозитория, используя git log:
Код: Выделить всё
def get_git_commits(limit=None):
cmd = [
"git", "log",
"--all",
"--date=iso",
"--pretty=format:%H%x1f%an%x1f%ad%x1f%s%x1f%b%x1f%P%x1e"
]
if limit:
cmd.insert(2, f"-{limit}")
result = subprocess.run(
cmd,
capture_output=True,
text=True,
check=True
)
commits = []
for record in result.stdout.strip("\n\x1e").split("\x1e"):
fields = record.split("\x1f")
commits.append({
"hash": fields[0],
"author": fields[1],
"date": fields[2],
"subject": fields[3],
"body": fields[4],
"parents": fields[5].split() if fields[5] else []
})
return commits
Код: Выделить всё
commits = get_git_commits(limit)
commits.reverse()
children = {c["hash"]: [] for c in commits}
for c in commits:
for parent in c["parents"]:
if parent in children:
children[parent].append(c["hash"])
Код: Выделить всё
is_merge = len(commit["parents"]) > 1
is_split = len(children[commit["hash"]]) > 1
if is_merge:
canvas[y][x] = f"{GREEN}MERGE"
elif is_split:
canvas[y][x] = f"{GREEN}SPLIT"
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-git-log
Мобильная версия