[英]Setting an env variable from post-checkout hook in git
我有一個工作環境,我經常在其中構建二進制文件,然后使用該二進制文件啟動長時間運行的進程。 當這些正在運行時,我想切換到另一個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
'編寫一個包裝器,它會打開一個新的shell, OUT_DIR
設置得恰當......但是那個“泄漏”的shell隨着時間的推移我會有相當多的運行。 對於感覺應該是一個簡單的解決方案而言,這些似乎都不是很好。
我可以將分支名稱打印到一個文件中,並使用構建/運行腳本從那里獲取它
這仍然是探索的方式,即使它涉及修改構建腳本。
但是獲取回購的當前分支名稱並不難 :
git -C /path/to/repo rev-parse --abbrev-ref HEAD
因此,您不需要編寫當前分支的名稱:構建腳本可以直接從repo獲取它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.