Incorporate some git information into NetHack so that it
is potentially visible to a player. That's useful when
collecting details about the version that they are
running and, if the gitinfo is present, it can tie the
code to a specific git commit in the repository.
This modifies 'makedefs -v' to check for the presence of a data file
called dat/gitinfo.txt and if it is there, parse out its
contents, then write additional lines to include/date.h beyond
what 'makedefs -v' was previously putting in there, similar to
this sample:
#define NETHACK_GIT_SHA "0c84e564c78e2024e562d39539376ce2e21eec8e"
#define NETHACK_GIT_BRANCH "NetHack-3.6.0"
The contents of an appropriate dat/gitinfo.txt are as follows,
and trailing/leading whitespace is not significant:
githash = 0c84e564c78e2024e562d39539376ce2e21eec8e
gitbranch = NetHack-3.6.0
It also adjusts the contents of the 'v' version information to
include the additional git info when available.
Also adds some hooks DEVEL/hooksdir and a perl file to DEVEL
for simplifying and automating the deposit of dat/gitinfo.txt
so that it generally reflects the most current git commit.
DEVEL/gitinfo.pl can be used to build dat/gitinfo.txt at any
time without doing a commit, merge, or checkout.
perl DEVEL/gitinfo.pl
command line --version and -version support
To complement the extra information being provided in the
version by the 'v' command, this also adds support for the
following new command line arguments:
--version
-version Output the NetHack version string then exit.
--version:paste Output the NetHack version string and also copy it to
-version:paste the platform's paste buffer for insertion somewhere,
then exit.
If the paste variation of -version is requested on a platform that
hasn't incorporated any support for the capability, it will deliver
the version info then an error message, prior to exiting.
To support the extended -version:paste variation, a port needs to:
- provide a port-specific routine to perform
the paste buffer copy in a port code file.
- #define RUNTIME_PASTEBUF_SUPPORT in the include/portconf.h header file.
--skeleton--
void port_insert_pastebuf(buf)
char *buf;
{
/* insert code to copy the version info from buf into
platform's paste buffer in a supported way */
}
macosx and Windows have both added support for RUNTIME_PASTEBUF_SUPPORT
33 lines
692 B
Perl
Executable File
33 lines
692 B
Perl
Executable File
#!/usr/bin/perl
|
|
# $NHDT-Date$
|
|
|
|
#STARTUP-START
|
|
BEGIN {
|
|
# OS hackery has to be duplicated in each of the hooks :/
|
|
# first the directory separator
|
|
my $DS = quotemeta('/');
|
|
my $PDS = '/';
|
|
# msys: POSIXish over a Windows filesystem (so / not \ but \r\n not \n).
|
|
# temporarily removed because inconsistent behavior
|
|
# if ($^O eq "msys")
|
|
# {
|
|
# $/ = "\r\n";
|
|
# $\ = "\r\n";
|
|
# }
|
|
if($^O eq "MSWin32"){
|
|
$DS = quotemeta('\\');
|
|
$PDS = '\\';
|
|
}
|
|
$gitdir = `git rev-parse --git-dir`;
|
|
chomp $gitdir;
|
|
push(@INC, $gitdir.$PDS."hooks");
|
|
}
|
|
|
|
use NHgithook;
|
|
#STARTUP-END
|
|
|
|
&NHgithook::PRE;
|
|
&NHgithook::nhversioning;
|
|
&NHgithook::POST;
|
|
exit 0;
|