diff --git a/src/redis-cli.c b/src/redis-cli.c index 2aedcc4a225b6ef070ce734f1f869ebca43cf609..3db4ff0121e2504b7e16af0daba79d27ba86de06 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -70,6 +70,7 @@ static struct config { static void usage(); char *redisGitSHA1(void); +char *redisGitDirty(void); /*------------------------------------------------------------------------------ * Utility functions @@ -105,6 +106,20 @@ typedef struct { static helpEntry *helpEntries; static int helpEntriesLen; +static sds cliVersion() { + sds version; + version = sdscatprintf(sdsempty(), "%s", REDIS_VERSION); + + /* Add git commit and working tree status when available */ + if (strtoll(redisGitSHA1(),NULL,16)) { + version = sdscatprintf(version, " (git:%s", redisGitSHA1()); + if (strtoll(redisGitDirty(),NULL,10)) + version = sdscatprintf(version, "-dirty"); + version = sdscat(version, ")"); + } + return version; +} + static void cliInitHelp() { int commandslen = sizeof(commandHelp)/sizeof(struct commandHelp); int groupslen = sizeof(commandGroups)/sizeof(char*); @@ -145,14 +160,16 @@ static void cliOutputCommandHelp(struct commandHelp *help, int group) { /* Print generic help. */ static void cliOutputGenericHelp() { + sds version = cliVersion(); printf( "redis-cli %s\r\n" "Type: \"help @\" to get a list of commands in \r\n" " \"help \" for help on \r\n" " \"help \" to get a list of possible help topics\r\n" " \"quit\" to exit\r\n", - REDIS_VERSION + version ); + sdsfree(version); } /* Output all command help, filtering by group or command name. */