我正在将我的单调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更简洁?
答案 0 :(得分:4)
以下适用于我:
$ git rev-parse --symbolic-full-name --abbrev-ref HEAD
master
如果你不在任何分支上(即你已经分离了HEAD),那么这将只返回HEAD
,但听起来好像在你的用例中你总是希望在一个分支上。
更新:事实上它更简单,您可以这样做: git rev-parse --abbrev-ref HEAD
答案 1 :(得分:0)
没有git命令只提供当前分支,因此您必须修改其输出以将其解压缩:
git branch --no-color 2> /dev/null | grep "*" | sed s/*\ //
1 2 3
说明:
*
*
答案 2 :(得分:0)
cat .git/HEAD | sed 's/.*\///'
sed 's/.*\///'
部分从行的开头删除“ref:refs / heads /”。