使用GitPython检索Github存储库名称

问题描述 投票:0回答:1

有没有办法使用GitPython获取存储库名称?

repo = git.Repo.clone_from(repoUrl, ".", branch=branch)

我似乎无法找到附加到具有此信息的repo对象的任何属性。可能是因为我误解了github / GitPython是如何工作的。

python-3.6 gitpython
1个回答
0
投票

我认为没有办法做到这一点。但是,我构建了这个函数来检索给定URL的存储库名称(你可以在行动here中看到它):

def get_repo_name_from_url(url: str) -> str:
    last_slash_index = url.rfind("/")
    last_suffix_index = url.rfind(".git")
    if last_suffix_index < 0:
        last_suffix_index = len(url)

    if last_slash_index < 0 or last_suffix_index <= last_slash_index:
        raise Exception("Badly formatted url {}".format(url))

    return url[last_slash_index + 1:last_suffix_index]

然后,你做:

get_repo_name_from_url("https://github.com/ishepard/pydriller.git")     # returns pydriller
get_repo_name_from_url("https://github.com/ishepard/pydriller")         # returns pydriller
get_repo_name_from_url("https://github.com/ishepard/pydriller.git/asd") # Exception

0
投票

working_dir对象的Repo属性是git repo的绝对路径。要解析repo名称,可以使用os.path.basename函数。

>>> import git
>>> import os
>>>
>>> repo = git.Repo.clone_from(repoUrl, ".", branch=branch)
>>> repo.working_dir
'/home/user/repo_name'
>>> os.path.basename(repo.working_dir)
'repo_name'
© www.soinside.com 2019 - 2024. All rights reserved.