【发布时间】:2014-10-19 01:10:48
【问题描述】:
我有一个工作环境,我经常在其中构建二进制文件,然后使用该二进制文件启动长时间运行的进程。当这些正在运行时,我想切换到另一个 git 分支并在那里做一些工作,并可能构建一些不会覆盖当前正在运行的二进制文件。
现在,构建和运行脚本使用 $OUT_DIR 环境变量来确定二进制文件的输出目录。理想情况下,我希望 $OUT_DIR 是特定于分支的,以避免上述构建相互覆盖的问题。
起初,这对于 post-checkout hook 来说似乎是一项简单的工作——将OUT_DIR 设置为 OUT_DIR_BASE + "/" + current branch... 除了 post-checkout hook 在子 shell 中运行,因此它不能设置父环境变量。
有什么巧妙的方法可以解决这个问题吗?
我考虑过的一些想法:
- 我可以将“
export OUT_DIR...”命令输出到一个文件中并生成 用户来源 - 这很烦人,人们会忘记这样做。 - 我可以将新的
OUT_DIR写入 .rc 文件并构建/运行脚本 从那里拿起它,但这需要对构建进行更改 环境,用户体验变得更差(即你不能“cd $OUT_DIR”进入输出目录...... - 我可以为“
git checkout”编写一个包装器,它会打开一个 适当设置OUT_DIR的新外壳......但那是“泄漏” 随着时间的推移,我会运行大量的 shell。
这些似乎都不是很好,因为感觉应该是一个简单的解决方案。
【问题讨论】:
标签: git shell environment-variables