📅  最后修改于: 2023-12-03 15:26:20.226000             🧑  作者: Mango
当我们使用版本控制系统(如Git)管理项目代码时,每次提交代码都要包含修改的文件列表。在某些情况下,我们可能需要在程序中显示提交的文件列表,这个过程可以通过以下几个步骤实现:
首先,需要从Git仓库中获取最新的提交记录。这可以通过Git命令git log
来实现。以下是Python代码片段,使用subprocess
模块调用Git命令并返回提交记录的结果:
import subprocess
def get_commit_logs():
cmd = ['git', 'log', '--pretty=format:%H,%an,%ae,%s', '--abbrev-commit']
result = subprocess.check_output(cmd).decode().strip()
return result.split('\n')
从Git命令git log
获取的提交记录包含提交ID、作者姓名、作者邮箱和提交信息等信息。为了获取修改的文件列表,我们需要解析提交信息。
以下是Python代码片段,用于解析提交信息并返回包含修改的文件列表的字典:
def parse_commit_info(commit_info):
commit_info = commit_info.split(',')
commit_id = commit_info[0]
author_name = commit_info[1]
author_email = commit_info[2]
message = commit_info[3]
cmd = ['git', 'show', '--name-only', commit_id]
files = subprocess.check_output(cmd).decode().strip().split('\n')[4:]
return {'commit_id': commit_id, 'author_name': author_name, 'author_email': author_email, 'message': message, 'files': files}
最后,我们可以将修改的文件列表以Markdown格式返回或显示。以下是Python代码片段,用于将文件列表转换为Markdown格式:
def format_files_md(files):
result = '### Modified Files:\n'
for f in files:
result += '- {}\n'.format(f)
return result
完整代码:
import subprocess
def get_commit_logs():
cmd = ['git', 'log', '--pretty=format:%H,%an,%ae,%s', '--abbrev-commit']
result = subprocess.check_output(cmd).decode().strip()
return result.split('\n')
def parse_commit_info(commit_info):
commit_info = commit_info.split(',')
commit_id = commit_info[0]
author_name = commit_info[1]
author_email = commit_info[2]
message = commit_info[3]
cmd = ['git', 'show', '--name-only', commit_id]
files = subprocess.check_output(cmd).decode().strip().split('\n')[4:]
return {'commit_id': commit_id, 'author_name': author_name, 'author_email': author_email, 'message': message, 'files': files}
def format_files_md(files):
result = '### Modified Files:\n'
for f in files:
result += '- {}\n'.format(f)
return result
if __name__ == '__main__':
commit_logs = get_commit_logs()
for commit_info in commit_logs:
commit_dict = parse_commit_info(commit_info)
files_md = format_files_md(commit_dict['files'])
print(files_md)
以上就是通过Python程序显示提交的文件列表的方法,可根据实际需求进行修改和拓展。