我有一个工作环境,我经常在其中构建二进制文件,然后使用该二进制文件启动长时间运行的进程。当这些正在运行时,我想切换到另一个git分支并在那里做一些工作,并可能构建一些不会覆盖当前正在运行的二进制文件。
现在,构建和运行脚本使用$OUT_DIR
env变量来确定二进制文件的输出目录。理想情况下,我希望$OUT_DIR
是特定于分支的,以避免上面提到的构建覆盖问题。
起初,这对于post-checkout钩子来说似乎是一个简单的工作 - 将OUT_DIR
设置为OUT_DIR_BASE + "/" + current branch
...除了post-checkout钩子在子shell中运行所以它不能设置父env变量。
有没有聪明的方法来解决这个问题?
我考虑过的一些想法:
export OUT_DIR...
”命令输出到文件并制作
用户来源 - 这很烦人,人们会忘记这样做。OUT_DIR
写入.rc文件并构建/运行脚本
从那里拿起它,但这需要更改构建
环境和用户体验变得更糟(即你不能“cd $OUT_DIR
”进入输出目录...... git checkout
'的包装器来打开一个
OUT_DIR
设置正确的新shell ...但是这是“泄漏”
随着时间的推移我会有相当多的炮弹。对于感觉应该是一个简单的解决方案而言,这些似乎都不是很好。
答案 0 :(得分:2)
我可以将分支名称打印到一个文件中,然后让构建/运行脚本从那里取出
这仍然是探索的方式,即使它涉及修改构建脚本。
但是getting the current branch name for a repo isn't hard:
git -C /path/to/repo rev-parse --abbrev-ref HEAD
所以你不需要写出当前分支的名称:构建脚本可以直接从repo中获取它。