有没有办法使用GitPython获取存储库名称?
repo = git.Repo.clone_from(repoUrl, ".", branch=branch)
我似乎无法找到附加到具有此信息的repo对象的任何属性。可能是因为我误解了github / GitPython是如何工作的。
我认为没有办法做到这一点。但是,我构建了这个函数来检索给定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
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'