diff --git a/.git_filters/RevDateURL.clean b/.git_filters/RevDateURL.clean index 84510c88a2..3d6afe0fcc 100755 --- a/.git_filters/RevDateURL.clean +++ b/.git_filters/RevDateURL.clean @@ -3,3 +3,4 @@ s/\$Date[^\$]*\$/\$Date\$/; s/\$Rev[^\$]*\$/\$Rev\$/; s/\$URL[^\$]*\$/\$URL\$/; +s/\$CommitHash[^\$]*\$/\$CommitHash\$/; diff --git a/.git_filters/RevDateURL.smudge b/.git_filters/RevDateURL.smudge index f682e38d0c..e6a0c79e3b 100755 --- a/.git_filters/RevDateURL.smudge +++ b/.git_filters/RevDateURL.smudge @@ -27,10 +27,14 @@ $url =~ s/\s+//gm; $date = `git log --format=%ad -1`; $date =~ s/\s+$//m; +$shorthash = `git log --format=%h -1`; +$shorthash =~ s/\s+$//m; + while () { s/\$Date[^\$]*\$/\$Date: $date \$/; s/\$URL[^\$]*\$/\$URL: $url \$/; s/\$Rev[^\$]*\$/\$Rev: $myrev \$/; + s/\$CommitHash[^\$]*\$/\$CommitHash: $shorthash \$/; } continue { print or die "-p destination: $!\n"; } diff --git a/platforms/Cross/vm/sqSCCSVersion.h b/platforms/Cross/vm/sqSCCSVersion.h index 9e7ad0a896..9197fbd428 100644 --- a/platforms/Cross/vm/sqSCCSVersion.h +++ b/platforms/Cross/vm/sqSCCSVersion.h @@ -37,6 +37,9 @@ static char SvnRawRevisionDate[] = "$Date$"; static char SvnRawRepositoryURL[] = "$URL$"; # define URL_START (SvnRawRepositoryURL + 6) +static char SvnRawRevisionShortHash[] = "$CommitHash$"; +# define SHORTHASH_START (SvnRawRevisionShortHash + 13) + static char * revisionAsString() { @@ -63,6 +66,13 @@ repositoryURL() *maybe_platforms = 0; return URL_START; } + +static char * +revisionShortHash() +{ + return SHORTHASH_START; +} + # undef REV_START # undef URL_START #elif GIT @@ -76,6 +86,9 @@ static char GitRawRevisionDate[] = "$Date$"; static char GitRawRepositoryURL[] = "$URL$"; # define URL_START (GitRawRepositoryURL + 6) +static char SvnRawRevisionShortHash[] = "$CommitHash$"; +# define SHORTHASH_START (SvnRawRevisionShortHash + 13) + static char * revisionAsString() { @@ -102,6 +115,13 @@ repositoryURL() *maybe_platforms = 0; return URL_START; } + +static char * +revisionShortHash() +{ + return SHORTHASH_START; +} + # undef REV_START # undef URL_START #else /* SUBVERSION */ @@ -111,6 +131,10 @@ revisionAsString() { return "?"; } static char * repositoryURL() { return "unknown"; } + +static char * +revisionShortHash() { return "unknown"; } + #endif /* SUBVERSION */ static char *sourceVersion = 0; @@ -120,22 +144,27 @@ sourceVersionString(char separator) { if (!sourceVersion) { #if 1 /* a) mingw32 doesn't have asprintf and b) on Mac OS it segfaults. */ - char *fmt = "VM: " PREFIX "%s %s Date: %s%cPlugins: " PREFIX "%s %s"; + char *fmt = "VM: " PREFIX "%s %s%cDate: %s CommitHash: %s%cPlugins: " PREFIX "%s %s"; int len = strlen(fmt) + strlen(revisionAsString()) + strlen(repositoryURL()) + strlen(revisionDateAsString()) + + strlen(revisionShortHash()) + strlen(pluginsRevisionAsString()) + strlen(pluginsRepositoryURL()); sourceVersion = malloc(len); snprintf(sourceVersion, len, fmt, - revisionAsString(), repositoryURL(), revisionDateAsString(), + revisionAsString(), repositoryURL(), + separator, + revisionDateAsString(), revisionShortHash(), separator, pluginsRevisionAsString(), pluginsRepositoryURL()); #else asprintf(&sourceVersion, - "VM: " PREFIX "%s %s Date: %s%cPlugins: " PREFIX "%s %s", - revisionAsString(), repositoryURL(), revisionDateAsString(), + "VM: " PREFIX "%s %s%cDate: %s CommitHash: %s%cPlugins: " PREFIX "%s %s", + revisionAsString(), repositoryURL(), + separator, + revisionDateAsString(), revisionShortHash(), separator, pluginsRevisionAsString(), pluginsRepositoryURL()); #endif