私のプログラムでは、gitのバージョン番号とビルドの日付を、という別のファイルに保持していますversion.c
。これは次のようになります。
#include "version.h"
const char * build_date = "2009-11-10 11:09";
const char * build_git_sha = "6b54ea36e92d4907aba8b3fade7f2d58a921b6cd";
次のようなヘッダーファイルもあります。
#ifndef VERSION_H
#define VERSION_H
extern const char * build_date;
extern const char * build_git_sha;
#endif
ヘッダーファイルとCファイルはどちらも、次のようなPerlスクリプトによって生成されます。
my $git_sha = `git rev-parse HEAD`;
$git_sha =~ s/\s+//g;
my %build;
$build{date} = make_date_time ();
$build{git_sha} = $git_sha;
hash_to_c_file ("version.c", \%build, "build_");
ここでhash_to_c_file
は、作成version.c
と作成のすべての作業を行いますversion.h
してmake_date_time
示すように、文字列になります。
メインプログラムでは、私はルーチンを持っています
#include "version.h"
const char * program_name = "magikruiser";
const char * version = "0.010";
static void _program_id_stamp (FILE * output)
{
fprintf (output, "%s / %s / %s / %s\n",
program_name, version,
build_date, build_git_sha);
}
私はgitについてそれほど知識がないので、これを行うためのより良い方法があればコメントを歓迎します。