2

リポジトリのgitpost-checkoutフックを使用して、変数への現在のブランチを作成しています。次に、PHPなどの場所でそれを使用したいと思います。

以下は私のチェックアウト後のスクリプトです。

#!/bin/bash
echo $GITBRANCH
GITBRANCH=`git symbolic-ref HEAD | cut -d/ -f3-`
echo $GITBRANCH
export $GITBRANCH

ただし、更新されません。例えば:

>git checkout master
Switched to branch 'master'
develop
master
>echo $GITBRANCH
develop

コマンドを単独で実行GITBRANCH=git symbolic-ref HEAD | cut -d/ -f3-すると、現在のブランチ名が生成されます。

フックが$GITBRANCH変数をグローバルに更新しないのはなぜですか?

4

4 に答える 4

3

スクリプトで変数を設定すると、スクリプトが実行されているシェルでのみ使用できます。プロセスが終了するとすぐに、設定した変数は永久に失われます。

変数をどこでも利用できるようにしたい場合は、おそらく.profileまたは.bashrcより良い場所です。

于 2012-10-17T14:52:55.097 に答える
0

スクリプトの前にドットを付けて実行します。

. script
于 2012-10-17T15:03:38.093 に答える
0

2段階のプロセスで、必要なことを達成できます。

1)チェックアウト後のスクリプトで、エクスポートする変数を含む一時ファイルを作成します。何かのようなもの

#!/bin/bash
GITBRANCH=`git symbolic-ref HEAD | cut -d/ -f3-`
echo "GITBRANCH=$GITBRANCH" > /tmp/new-branch

2)bashラッパーとして機能する関数を作成しgit、それを使用してチェックアウト後に一時ファイルを取得します。

# Put this in .bashrc
git () {
    command git "$@"
    if [[ $1 = "checkout" ]]; then
        . /tmp/new-branch
    fi
}

$ git checkout master
Switched to branch 'master'
$ echo $GITBRANCH
master
于 2012-10-17T15:29:40.387 に答える
-1

試す:

export GITBRANCH

つまり、ドル記号なしです。

于 2012-10-17T14:52:24.180 に答える