当用户不是Windows 11上克隆存储库的所有者时,从gitpython检索SHA?

2cmtqfgy  于 2023-05-21  发布在  Git
关注(0)|答案(1)|浏览(101)

我正在使用gitpython库在Windows 11企业PC上执行期间获取Python代码的SHA。当我在克隆存储库时,它工作得很好。当另一个用户尝试运行代码时,除非他们先在命令行输入“git config --global --add safe.directory“,否则会失败。如果该用户不是PC上的管理员,则每次登录时都必须在命令行输入该git config命令。
有没有一种方法可以在Python代码执行时可靠地获得SHA,而不管用户是谁登录的?
这是我用来获取git SHA的函数:

import git # note gitpython is what needs to be installed
def gitsha() -> str:
    try:
        repo = git.Repo(search_parent_directories=True)
        sha = repo.head.object.hexsha
        return sha[-8:]
    except:
        return "ERROR"
kxe2p93d

kxe2p93d1#

有多种方法可以做到这一点。git ls-remote /path/to/repo HEAD的第一个单词可能是最快和最干净的,它甚至不需要本地仓库,你也可以使用任何url。
如果你做的不仅仅是检查引用,那么引用也就是共享对象也就是替代对象源克隆是非常方便的。
使用shell命令,

git clone -ns path/to/repo `mktemp -d`
git -C $_ rev-parse @

你可以添加--template= --single-branch --no-tags --bare ot克隆选项额外的纯度点和往往较少的速度增益比它采取的类型,在这种使用。
问题是,在仓库中执行的git将使用它的配置,一些git命令最终会调用hook和helper命令。如果你使用的是别人的仓库,他们配置的命令可能会让你感到意外,甚至是不愉快的,所以Git增加了检查仓库是否由别人拥有,以及safe.directory列表。
如何让gitpython做到这一点,我留给“读者的练习”。是的,就是这样。

相关问题