【问题标题】:Git push-to-deploy post-receive python script not cannot set env varGit push-to-deploy post-receive python脚本不能设置env var
【发布时间】:2016-11-01 11:34:11
【问题描述】:

自从尝试设置一个小型自动部署脚本 2 天以来,我一直陷入困境。 问题是:我已经使用 Git 几个月了,但我总是自己在本地使用它,只是为了轻松保存我的代码版本。一切都很好,直到这里。

现在我必须想办法在新功能实现后立即“发布”代码,而且我认为代码足够稳定。 环顾四周,我发现了这些“钩子”,它们是 Git 在某些情况下执行的脚本。基本上这个想法是让我的主分支与我发布的代码同步,这样每次我将一个分支合并到主分支并“推送”时,文件都会自动复制到“/my/published/folder”中。

也就是说,我找到了this tutorial,它解释了使用 Ruby 编写的“挂钩”接收后脚本完全符合我的要求。因为在我的工作室,我现在没有也不想使用 Ruby,所以我找到了相同脚本的 Python version。 我测试和测试,但我无法让它工作。我不断收到同样的错误:

remote: GIT_WORK_TREE is not recognized as as internal or external command,

请考虑这是基于我上面分享的教程。相同的项目名称,相同的结构等。 我什至在我的个人笔记本电脑上安装了 Ruby 并尝试了原始脚本,但它仍然无法正常工作......

我使用的是 Windows,并且 Git 环境变量已设置并可访问。但是,它似乎无法识别 GIT_WORK_TREE 命令。如果我从 Git Bash 运行它,它工作得很好,但如果我使用 Windows Shell,我会收到相同的错误消息。 我想当在我的 py 脚本中使用 call() 函数时,它使用 Windows Shell 运行 cmd。这是我的猜测,但我真的不知道如何解决它。谷歌没有帮助,好像以前没有人遇到过这个问题。 也许我只是在这里没有看到明显的东西,但我花了一整天的时间,我无法摆脱这个泥潭!

有谁知道如何解决它,或者至少有一个解决方法的想法?

希望有人可以帮助... 非常感谢!

【问题讨论】:

  • stackoverflow.com/questions/15449428/… 建议使用executable 参数。我不知道这是否真的适用于 Windows。如果是这样,也许将其标记为该问题的重复项。
  • 不清楚你的环境是什么——你打算部署到哪里?到本地文件夹还是到另一台服务器?你有远程仓库吗?如果不是 - “推动”是什么意思?
  • @ivan 该项目是按照上面提到的教程link创建的。一切都是本地的,它正在推送到本地“远程”裸存储库!
  • 请看我的回答,看来问题出在 GIT_WORK_TREE 环境变量定义上

标签: python git bash hook


【解决方案1】:

您所说的 Ruby 脚本会生成“bash”命令:

GIT_WORK_TREE=/deploy/path git checkout -f ...

意思是:用值“/deploy/path”定义环境变量“GIT_WORK_TREE”并执行“git checkout -f ...”。 据我了解,它不适用于 Windows 命令行。 尝试使用类似的东西:

set GIT_WORK_TREE=c:\temp\deploy && git checkout -f ...

【讨论】:

    【解决方案2】:

    我也遇到过这个问题 - 我发现的最佳解决方案是将工作树作为参数之一传递

    git --work-tree="/deploy/path" checkout -f ...
    

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2013-03-24
      • 2017-10-19
      • 2016-08-08
      • 2021-12-21
      相关资源
      最近更新 更多