我在我的项目中开发了一个spark 源数据帧.对于这个数据帧,我需要一个包含最新提交散列的列,以便于跟踪.提交散列必须在Python代码中获得.我找到了解决这个问题的this post个.其中一种方法是使用GitPython库,它工作得很好,但我希望避免在项目中引入新的依赖项,因为它只有一个用例.因此,我try 了另一种建议的方法:

import subprocess

def get_git_revision_hash() -> str:
    return subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip()

def get_git_revision_short_hash() -> str:
    return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip()

这种方法同样有效,但是我的项目使用Ruff作为其链接,并且发现使用这种方法可能存在潜在的安全风险,请参阅Ruff规则S603S607.

现在我在想,有没有一种安全的方法可以在不依赖外部依赖的情况下使用python获得提交散列?

推荐答案

你可以查看.git/HEAD的内容.如果您处于detached HEAD状态,您将拥有您在那里签出的任何内容的提交ID.否则,你会得到一个where的引用来判断.因此,如果您签出了分支机构X,您将得到如下内容:

ref: refs/heads/X

然后,您可以判断文件.git/refs/heads/X,您应该会得到提交ID.

Python相关问答推荐

在Python中对分层父/子列表进行排序

如何在msgraph.GraphServiceClient上进行身份验证?

替换字符串中的多个重叠子字符串

Pystata:从Python并行运行stata实例

如何让剧作家等待Python中出现特定cookie(然后返回它)?

从numpy数组和参数创建收件箱

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

在Python中管理打开对话框

所有列的滚动标准差,忽略NaN

无法连接到Keycloat服务器

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

如何使用使用来自其他列的值的公式更新一个rabrame列?

用SymPy在Python中求解指数函数

如何在Great Table中处理inf和nans

如何在Airflow执行日期中保留日期并将时间转换为00:00

如何在信号的FFT中获得正确的频率幅值

如何设置nan值为numpy数组多条件

如何在Pandas中用迭代器求一个序列的平均值?

如何获取给定列中包含特定值的行号?