1

重複の可能性:
Gitの現在のブランチのみを表示する

モノトーンDVCSをgitに移動しています。私のビルドセットアップでは、qmakeに現在のリビジョンと現在のブランチを取得させ(これらはbuildbotでビルドされているため)、定義として使用できるようにします。

exists(_MTN):DEFINES += BUILDREVISION=\\\"$$system(mtn automate get_base_revision_id)\\\"
else:DEFINES += BUILDREVISION=\\\"NOT \
    BUILT \
    FROM \
    SOURCE \
    REPOSITORY\\\"

# Check which branch we are building
exists(_MTN):DEFINES += BUILDBRANCH=\\\"$$system(mtn au get_option branch)\\\"
else:DEFINES += BUILDBRANCH=\\\"UNKNOWN\\\"

gitで私ができること:

exists(.git):DEFINES += BUILDREVISION=\\\"$$system(git rev-parse HEAD)\\\"
else:DEFINES += BUILDREVISION=\\\"NOT \
    BUILT \
    FROM \
    SOURCE \
    REPOSITORY\\\"

# Check which branch we are building
exists(.git):DEFINES += BUILDBRANCH=\\\"$$system(git show-branch --current)\\\"
else:DEFINES += BUILDBRANCH=\\\"UNKNOWN\\\"

私の問題は、「git show-branch --current」にコミットメッセージと改行文字が含まれていることです。これは、コンパイラが気に入らないものです。どうすればgitをより簡潔にすることができますか?

4

3 に答える 3

4

以下は私のために働きます:

$ git rev-parse --symbolic-full-name --abbrev-ref HEAD
master

ブランチに参加していない場合(つまり、HEADをデタッチした場合)、これは単に戻りHEADますが、ユースケースでは常にブランチに参加することを期待しているように聞こえます。

更新:実際、それはさらに簡単です、あなたはただすることができます: git rev-parse --abbrev-ref HEAD

于 2011-07-22T11:15:03.343 に答える
0

gitコマンドでは現在のブランチのみが提供されるため、出力を変更して抽出する必要があります。

git branch --no-color 2> /dev/null | grep "*" | sed s/*\ //
1                                    2          3

説明:

  1. ブランチリストを取得する
  2. プレフィックスが付いた現在のブランチを選択します*
  3. を削除します*
于 2011-07-22T10:46:18.090 に答える
0
cat .git/HEAD | sed 's/.*\///'

このsed 's/.*\///'部分は、行の先頭から「ref:refs /heads/」を削除します。

于 2011-07-22T11:06:16.233 に答える