WORKSPACE="$(git rev-parse --show-toplevel)"
特定のタスクなどのエイリアスを作成できるように、~/.bashrc
本質的にgitリポジトリのルートに設定される変数を設定しました。$WORKSPACE
building an image
going to my component directory in the repo
これで、指定されたディレクトリ名と分岐名を使用して新しいgit作業ツリーを生成するbashシェルスクリプトを作成しました。私のスクリプト構文は次のとおりです -
my_script -c <branch_name> -d <directory_name>
これで問題は、新しい作業ツリーを作成した後、$WORKSPACE
新しく作成されたgit作業ツリーのディレクトリ名に変数を設定する必要があることです。
現在私はやっている -
cd $DIR -> which is `directory_name`
WORKSPACE="$(git rev-parse --show-toplevel)"
しかし、これは役に立ちません。なぜなら、 . の設定値は$WORKSPACE
(スクリプトがトリガされる) 対話型 bash シェルではなく、スクリプトが実行される非対話型セッションに適用されるからです。したがって、イメージを構築するためにエイリアスをトリガーすると、新しく作成された作業ツリーディレクトリのコンテキストではトリガーされません。
この問題をどのように解決できますか?
答え1
git コマンドの新しい値を取得するディレクトリで、次の行を実行します。
git rev-parse --show-toplevel > ~/tmpfile
次に、これを次の項目に追加します.bashrc
。
WORKPLACE=$(cat ~/tmpfile)
いよいよ逃げたsource ~/.bashrc
これで、ファイルシステムのどこからでも更新された値としてWORKPLACEを参照できます。
tmpfile
場所は簡単に管理できますが、.bashrc
場所も必ず指定してください。