Я использую git describe
, чтобы получить версию, которая использует тег или номер коммита. Обычно это дает хорошие версии, такие как: v0.1-1-g787c667
, если у кончика ветки есть дополнительные коммиты над тегом 'v0.1'.
Используемая мной команда git: git describe --tags --always
. Я обычно использую его с системой сборки SCons и определяю как постоянную, соответствующую часть SConstruct:
import os, sys
from subprocess import *
def getGitDesc():
return Popen('git describe --tags --always', stdout=PIPE, shell=True).stdout.read ().strip ()
GIT_DESC = getGitDesc ()
print "Building " + getGitDesc () + ".."
env = Environment ()
# set up environment
env.Append (CPPDEFINES = { 'GIT_DESC' : ('\\"%s\\"' % GIT_DESC) } )
# build your program
env.Program (....)
В программе на C или C ++ теперь я могу получить доступ к GIT_DESC
в виде строковой константы:
# include <iostream>
using namespace std;
int main (int argc, char ** argv) {
cout << "Version: " << GIT_DESC << endl;
return 42;
}
примечание: аргумент --abbrev=N
для git describe
может быть полезен для получения согласованного вывода версии независимо от конфигурации git пользователя.