From 5f02f11890b79f3254fbafa67ee6600982953856 Mon Sep 17 00:00:00 2001 From: Steven Schubiger Date: Thu, 26 Jun 2014 16:08:37 +0200 Subject: Include commit hash in version output Extracting the abbreviated commit hash will break when git will be replaced by a different version control system. But until it does, get the hash from the git repository. --- Makefile | 5 +++-- colorize.c | 10 +++++++++- version.pl | 24 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100755 version.pl diff --git a/Makefile b/Makefile index ca0ee68..d061794 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,11 @@ CC=gcc CFLAGS=-ansi -pedantic colorize: colorize.c - $(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" + perl ./version.pl > version.h + $(CC) $(CFLAGS) -o colorize colorize.c -DCFLAGS="$(CFLAGS)" -DHAVE_VERSION check: perl ./test.pl clean: - [ -e colorize ] && rm colorize; exit 0 + rm -f colorize version.h diff --git a/colorize.c b/colorize.c index 54f6889..ea18425 100644 --- a/colorize.c +++ b/colorize.c @@ -403,6 +403,11 @@ print_help (void) static void print_version (void) { +#ifdef HAVE_VERSION +# include "version.h" +#else + const char *version = NULL; +#endif const char *c_flags; struct bytes_size bytes_size; bool debug; @@ -416,7 +421,10 @@ print_version (void) #else debug = false; #endif - printf ("%s v%s (compiled at %s, %s)\n", "colorize", VERSION, __DATE__, __TIME__); + if (version) + printf ("colorize %s (compiled at %s, %s)\n", version, __DATE__, __TIME__); + else + printf ("colorize v%s (compiled at %s, %s)\n", VERSION, __DATE__, __TIME__); printf ("Compiler flags: %s\n", c_flags); if (get_bytes_size (BUF_SIZE, &bytes_size)) { diff --git a/version.pl b/version.pl new file mode 100755 index 0000000..850902e --- /dev/null +++ b/version.pl @@ -0,0 +1,24 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +my $version = ''; + +# git repository +if (system('which git >/dev/null 2>&1') == 0 +and system('git ls-files colorize.c --error-unmatch >/dev/null 2>&1') == 0) { + $version = `git describe --tags --dirty`; + $version =~ s/\n$//g; +} + +if (length $version) { + print <<"EOT"; +const char *version = "$version"; +EOT +} +else { + print <<'EOT'; +const char *version = NULL; +EOT +} -- cgit v1.2.3