gpt4 book ai didi

git - 从 git 中的 checkout 后 Hook 设置环境变量

转载 作者:太空狗 更新时间:2023-10-29 13:43:19 27 4
gpt4 key购买 nike

我有一个工作环境,我经常在其中构建二进制文件,然后使用该二进制文件启动长时间运行的进程。当这些正在运行时,我想切换到另一个 git 分支并在那里做一些工作,并可能构建一些不会覆盖当前正在运行的二进制文件的新二进制文件。

现在,构建和运行脚本使用 $OUT_DIR 环境变量来确定二进制文件的输出目录。理想情况下,我希望 $OUT_DIR 是特定于分支的,以避免上述构建相互覆盖的问题。
起初,这对于 checkout 后 Hook 来说似乎是一项简单的工作——将 OUT_DIR 设置为 OUT_DIR_BASE + "/"+ 当前分支...除了 checkout 后钩子(Hook)在子 shell 中运行,因此它无法设置父环境变量。

有什么聪明的方法可以解决这个问题吗?

我考虑过的一些想法:

  • 我可以将“export OUT_DIR...”命令输出到一个文件,并制作用户来源它——这很烦人,人们会忘记这样做。
  • 我可以将新的 OUT_DIR 写入一个 .rc 文件并构建/运行脚本从那里拿起它,但这需要改变构建环境,用户体验会变得更糟(即你不能执行“cd $OUT_DIR”进入输出目录...
  • 我可以为“git checkout”写一个包装器来打开一个适当设置了 OUT_DIR 的新 shell...但那是“泄漏”随着时间的推移,我会运行大量 shell。

这些似乎都不是很好的感觉,因为感觉应该是一个简单的解决方案。

最佳答案

I could print the branch name into a file and have build/run scripts pick it up from there

这仍然是探索的方式,即使它涉及修改构建脚本。

但是getting the current branch name for a repo isn't hard :

git -C /path/to/repo rev-parse --abbrev-ref HEAD

因此您无需编写当前分支的名称:构建脚本可以直接从存储库中获取它。

关于git - 从 git 中的 checkout 后 Hook 设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com