Python-如何检查路径是否在git repo下?并提取回购名称

时间:2018-06-23 00:07:04

标签: gitpython

我正在尝试使用python rollin.py开发具有以下要求的Gatekeeper脚本:

  1. 假定用户将从其本地git克隆区域内的任何位置启动rollin.py脚本,以将其提交推送到主存储库

  2. 现在,rollin.py脚本将会

    • 从主服务器克隆回购协议
    • 拉用户提交并合并到克隆的存储库中
    • 运行合规性测试
    • 如果通过,则将这些更改推送到主仓库中,否则丢弃并通知用户

现在在rolloin.py脚本中,我将如何检查存储库名称和用户的git clone路径? (因为用户可以在其本地任何地方启动rolloin.py脚本)

是否有可用的现有功能或方法?否则,我正在考虑从cwd实现反向递归搜索,以找到.git,然后从其配置文件进行url。

2 个答案:

答案 0 :(得分:2)

使用GitPython

您可以使用已经编写的GitPython模块来实现。 Read the docs

$ pip install GitPython

Python代码段可打印基本git路径和origin远程URL。

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

要创建一个新的git repo

import git 

newRepo = git.Repo.init("my-git-repo", mkdir=True)

答案 1 :(得分:0)

您可以使用os.system运行git rev-parse --git-dir,这会将路径返回到运行命令的存储库的.git文件夹。有关更多信息,请参见How to find the path of the local git repository when I am possibly in a subdirectory