【问题标题】:How to know if a git hook is being called from not within the terminal/command line如何知道是否从终端/命令行中调用了 git hook
【发布时间】:2016-10-14 14:42:43
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是否尝试使用printenv比较环境变量?
  • @Dario 不,我会尝试并回复你。
  • @Dario 我正在使用print os.environ。你是这么想的吗?我应该从这个输出中检查什么?
  • 您可以访问存储库所在的服务器吗?无论您想要完成什么,似乎都可以在服务器端而不是客户端更容易和可维护地完成。也就是说,这些钩子是做什么的?
  • @JordanBonitatis 这是客户端的预提交钩子

标签: python git githooks atlassian-sourcetree


【解决方案1】:

我能够使用这个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 2022-01-10
    • 2016-10-27
    • 2018-03-28
    • 2015-07-09
    • 2016-08-16
    相关资源
    最近更新 更多