代码之家  ›  专栏  ›  技术社区  ›  sorin

如何使用python从本地克隆存储库获取github组织和存储库名称?

  •  0
  • sorin  · 技术社区  · 6 年前

    显然地 github3 模块确实需要您提供github组织和存储库名称,因为无法根据当前存储库猜测它们。

    我还检查了 https://pypi.org/project/GitPython/ 但我无法确定需要进行哪些正确的调用才能确定组织名称和存储库名称。

    我确实怀疑我需要以某种方式调查遥控器,但文件记录让我有点失望。

    1 回复  |  直到 6 年前
        1
  •  0
  •   kimbo    6 年前

    你可以随时使用 subprocess 内置调用git命令。见这个问题: How do you get the Git repository's name in some Git repository? .

    import subprocess
    import basename
    import os
    output = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'])
    repo = os.path.basename(output)
    

    显然你可以在pygithub做这件事。 Python - how to check whether the path is under a git repo? and extract the repo name .

    答案中的代码示例(将打印更改为python3):

    import git 
    
    # Raises InvalidGitRepositoryError when not in a repo 
    repo = git.Repo(".", search_parent_directories=True) 
    print("Location "+ repo.working_tree_dir) 
    print("Remote: " + repo.remote("origin").url)
    

    你可以看看他们的源代码,看看他们在运行什么命令。

        2
  •  0
  •   syfluqs    6 年前

    您还可以简单地从remotes配置获取存储库URL,如果您不想使用外部库,只需进行一些简单的文件读取和解析。

    读文件 .git/config 在那里你可以找到 url 在格式的“配置”子标题下 [remote <remote name>] 。获得存储库的正确url并检查来源是否属于github后,可以使用github公共REST API获取组织。API文档: https://developer.github.com/v3/repos/#get 。如果回购协议属于某个组织,则API json响应将具有 organization 此外,还需要了解组织的完整细节。

    推荐文章