python - GitPython获取开始sha1和结束sha1之间范围内的所有提交
问题描述
我正在使用GitPython库,想知道如何在两个提交 sha-1 范围内的分支上获取所有提交。我有一个开始和结束一个。有没有办法得到他们的名单?
我已经实例化了 repo 对象,想知道是否有办法查询它并获取两个 shas 范围内的提交列表?
将寻求执行与此命令类似的操作,但将它们作为列表返回:
git log e0d8a4c3fec7ef2c352342c2ffada21fa07c1dc..63af686e626e0a5cbb0508367983765154e188ce --pretty=format:%h,%an,%s > commits.csv
似乎有Repo.iter_commits()方法,但看不到如何指定范围。
解决方案
@shlomi33 这是我的解决方案:
这是我用来设置 GitPyhton 提交对象列表的方法。在类中,我已经实例化了该方法所依赖的 Repo 对象。
编辑:还添加了用于设置 Repo 对象实例的 init 方法。
def __init__(self, repo_url, project_name, branch_name) -> None:
"""
Clone the required repo in the repo folder and instantiate the Repo instance
:param repo_url: str of the git repository url
:param project_name: str of the project name
:param branch_name: str of the branch name
"""
self._repo_url = repo_url
self._project = project_name
self._branch = branch_name
self._project_dir = Path(self._repo_dir, self._project)
if self._project_dir.exists():
self._logger.info('Deleting existing repo: ' + str(self._project_dir))
shutil.rmtree(self._project_dir)
self._logger.info('Creating directory for repo: ' + str(self._project_dir))
os.makedirs(self._project_dir)
try:
self.repo = GitRepo.clone_from(self._repo_url, self._project_dir, branch=self._branch,
progress=self.__progress)
except GitCommandError:
self._logger.error('Failed to clone repo. Make sure you have git ssh access set up.')
raise
self._logger.info('Repository downloaded to: ' + str(self._repo_dir))
def set_commits(self, start_rev: str, end_rev: str):
"""
Sets a list of Commits for the range of the start rev and end rev
:param start_rev: Start commit revision SHA1
:param end_rev: End commit revision
"""
self._start_rev = start_rev
self._end_rev = end_rev
commits = self.repo.iter_commits(start_rev + '..' + end_rev)
self._commits = list(map(Commit, list(commits)))
推荐阅读
- sql - sql server中的group_concat,但连接值列不在group by
- java - java中的参数化查询
- python - 如何将函数应用于列表中的每三个集合?
- python - OSError: [WinError 87] 参数不正确
- flutter - Flutter 视频播放器检索视频的宽度和高度
- quarkus - Quarkus 仅传输数据字段上的 SSE 有效负载反应?
- php - 如何从sqlite db读取/检索散列密码以使用php登录
- websphere - 如何在一周的第一个星期一设置 Ibm 的调度程序?
- r - R中是否有一个函数可以按数量增加的组重命名行
- html - 如何使html组件居中?