我有一个工作环境,我经常在其中构建二进制文件,然后使用该二进制文件启动长时间运行的进程.当这些正在运行时,我想切换到另一个git分支并在那里做一些工作,并可能构建一些不会覆盖当前正在运行的二进制文件.
现在,构建和运行脚本使用$OUT_DIR env变量来确定二进制文件的输出目录.理想情况下,我希望$OUT_DIR是特定于分支的,以避免上面提到的构建覆盖彼此的问题.
起初,这对于post-checkout钩子来说似乎是一个简单的工作 – 将OUT_DIR设置为OUT_DIR_BASE“/”当前分支…除了post-checkout钩子在子shell中运行所以它不能设置父env变量.
有没有聪明的方法来解决这个问题?
我考虑过的一些想法:
>我可以将“export OUT_DIR …”命令输出到文件并生成
用户来源 – 这很烦人,人们会忘记这样做.
>我可以将新的OUT_DIR写入.rc文件并具有构建/运行脚本
从那里拿起它,但这需要更改构建
环境,用户体验变得更糟(即你不能做“cd $OUT_DIR”进入输出目录……
>我可以为’git checkout’编写一个包装器来打开一个
OUT_DIR设置正确的新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
因此,您不需要编写当前分支的名称:构建脚本可以直接从repo获取它.