簡體   English   中英

從git中的post-checkout hook設置一個env變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM