You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用qsub提交集群任务时gitpython获取当前git哈希失效如何解决

解决方案

场景1:集群节点可访问提交任务时的原仓库路径(绝大多数共享存储集群符合该条件)

Torque/PBS集群会默认注入PBS_O_WORKDIR环境变量,存储你提交任务时的本地目录,直接读取该变量即可定位到原git仓库,无需修改提交命令,也无需硬编码路径,修改后的Python代码兼容本地运行和集群运行:

import git
import os

# 优先读取集群任务的提交原路径,本地运行时回退到当前工作目录
repo_root = os.getenv("PBS_O_WORKDIR", os.getcwd())
rep = git.Repo(repo_root, search_parent_directories=True)
git_hash = rep.head.object.hexsha

with open('logfile.txt', 'w+') as writer:
    writer.write('Code version: {}'.format(git_hash))

场景2:集群节点无法访问原仓库路径

在提交任务的本地环境提前获取git哈希,通过qsub的-v参数将哈希作为环境变量传递给集群任务,无需在集群侧访问git仓库:

  1. 提交命令修改为:
# 本地执行提交命令,提前获取git哈希传入集群
qsub -l nodes=1:ppn=12 -v GIT_HASH="$(git rev-parse HEAD)" analysis.py -q shared
  1. 对应修改Python代码:
import git
import os

git_hash = os.getenv("GIT_HASH")
if not git_hash:
    # 本地运行时回退到原逻辑
    rep = git.Repo(os.getcwd(), search_parent_directories=True)
    git_hash = rep.head.object.hexsha

with open('logfile.txt', 'w+') as writer:
    writer.write('Code version: {}'.format(git_hash))

内容的提问来源于stack exchange,提问作者Pibe_chorro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:54:05