python - 如何知道是否不在终端/命令行中调用 git hook

标签 python git githooks atlassian-sourcetree

我有一个 git Hook ,只要有人提交到他们的本地存储库,它就会运行。

有些人从终端提交,有些人从 SourceTree 或 SmartGit 或其他一些第 3 方应用程序提交。

SourceTree 在涉及 Hook 时表现不同。例如,默认情况下错误是红色的,并且似乎不支持用户输入,所以我需要根据用户是从 SourceTree 还是 SmartGit 等提交来更改我的 python 脚本。

有什么方法可以在我的脚本中执行此操作吗?

最佳答案

我能够使用此 python 代码解决问题。它只是检查环境变量是否出现任何第三方 git 客户端。我不知道它是否是最佳解决方案,或者它是否会一直有效 - 但它目前满足我的需求。

is_terminal = True

for key in os.environ:
    if "SourceTree" in os.environ[key] or "SmartGit" in os.environ[key]:
        is_terminal = False
        break

关于python - 如何知道是否不在终端/命令行中调用 git hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37802305/

相关文章:

python - 如何将 float 格式化为 10 或 100 位数?

git - 如何告诉 Git 总是 pull master 分支?

git - 如果在 git 中使用 hook 存在 Unresolved 冲突,如何防止推送?

visual-studio - 为什么会有.sln、.suo 和.csproj 文件?

linux - Git hooks 可能需要更高的权限

python - Cron 执行的 python 脚本运行但不更新 sqlite db

python - mock `background_tasks.add_task`

python - 如何获取 Scipy 稀疏矩阵(csr_matrix 和 csc_matrix)中每一行的总和和每一列的总和?

git - 如何仅在子目录中运行 husky 预提交

git - 在预提交 Hook 期间再次暂存文件?