Incorporate some git information into NetHack
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
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 version.c $NHDT-Date: 1506993902 2017/10/03 01:25:02 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.44 $ */
|
||||
/* NetHack 3.6 version.c $NHDT-Date: 1517140532 2018/01/28 11:55:32 $ $NHDT-Branch: nhmall-githash3 $:$NHDT-Revision: 1.50 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
#include "patchlevel.h"
|
||||
#endif
|
||||
|
||||
#if defined(NETHACK_GIT_SHA)
|
||||
const char * NetHack_git_sha = NETHACK_GIT_SHA;
|
||||
#endif
|
||||
#if defined(NETHACK_GIT_BRANCH)
|
||||
const char * NetHack_git_branch = NETHACK_GIT_BRANCH;
|
||||
#endif
|
||||
|
||||
STATIC_DCL void FDECL(insert_rtoption, (char *));
|
||||
|
||||
/* fill buffer with short version (so caller can avoid including date.h) */
|
||||
@@ -30,23 +37,34 @@ char *
|
||||
getversionstring(buf)
|
||||
char *buf;
|
||||
{
|
||||
int details = 0;
|
||||
boolean details = FALSE;
|
||||
|
||||
Strcpy(buf, VERSION_ID);
|
||||
#if defined(RUNTIME_PORT_ID)
|
||||
details++;
|
||||
#if defined(RUNTIME_PORT_ID) || \
|
||||
defined(NETHACK_GIT_SHA) || defined(NETHACK_GIT_BRANCH)
|
||||
details = TRUE;
|
||||
#endif
|
||||
|
||||
if (details) {
|
||||
int c = 0;
|
||||
#if defined(RUNTIME_PORT_ID)
|
||||
char tmpbuf[BUFSZ];
|
||||
char *tmp = (char *)0;
|
||||
#endif
|
||||
|
||||
Sprintf(eos(buf), " (");
|
||||
#if defined(RUNTIME_PORT_ID)
|
||||
tmp = get_port_id(tmpbuf);
|
||||
if (tmp)
|
||||
Sprintf(eos(buf), "%s%s", c++ ? "," : "", tmp);
|
||||
#endif
|
||||
#if defined(NETHACK_GIT_SHA)
|
||||
if (NetHack_git_sha)
|
||||
Sprintf(eos(buf), "%s%s", c++ ? "," : "", NetHack_git_sha);
|
||||
#endif
|
||||
#if defined(NETHACK_GIT_BRANCH)
|
||||
if (NetHack_git_branch)
|
||||
Sprintf(eos(buf), "%s%s", c++ ? "," : "", NetHack_git_branch);
|
||||
#endif
|
||||
Sprintf(eos(buf), ")");
|
||||
}
|
||||
@@ -130,6 +148,37 @@ doextversion()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void early_version_info(pastebuf)
|
||||
boolean pastebuf;
|
||||
{
|
||||
char buf[BUFSZ], buf2[BUFSZ];
|
||||
char *tmp = getversionstring(buf);
|
||||
|
||||
/* this is early enough that we have to do
|
||||
our own line-splitting */
|
||||
if (tmp) {
|
||||
tmp = strstri(buf," (");
|
||||
if (tmp) *tmp++ = '\0';
|
||||
}
|
||||
|
||||
Sprintf(buf2, "%s\n", buf);
|
||||
if (tmp) Sprintf(eos(buf2), "%s\n", tmp);
|
||||
raw_printf("%s", buf2);
|
||||
|
||||
if (pastebuf) {
|
||||
#ifdef RUNTIME_PASTEBUF_SUPPORT
|
||||
/*
|
||||
* Call a platform/port-specific routine to insert the
|
||||
* version information into a paste buffer. Useful for
|
||||
* easy inclusion in bug reports.
|
||||
*/
|
||||
port_insert_pastebuf(buf2);
|
||||
#else
|
||||
raw_printf("%s", "Paste buffer copy is not available.\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
extern const char regex_id[];
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user