threads / discuss / 20996

Add compiled date to git --version output?

Subject: Add compiled date to git --version output?

## tl;dr

5 messages between Sep 18, 2009 and Sep 18, 2009.

replies: 4people: 4as markdown or json

Nazri Ramliy· Sep 18, 2009, 04:17 UTC · lore
Sometimes I wanted to know how outdated git is on my system.

Coming up with a script to parse "git --version" output to get the SHA1, and compare that to master's SHA1 seemed a little overkill compared to this:

diff --git a/help.c b/help.c
index 294337e..bc83491 100644
--- a/help.c
+++ b/help.c
@@ -361,6 +361,9 @@ const char *help_unknown_cmd(const char *cmd)

 int cmd_version(int argc, const char **argv, const char *prefix)
 {
-       printf("git version %s\n", git_version_string);
+       printf("git version %s compiled %s %s\n",
+                       git_version_string,
+                       __DATE__,
+                       __TIME__);
        return 0;
 }

With this, git --version gives:

        git version 1.6.5.rc1.19.g8426.dirty compiled Sep 18 2009 12:03:29

Thoughts?

Nazri
Brian Gernhardt· Sep 18, 2009, 04:43 UTC · re: Nazri Ramliy · lore

Re: Add compiled date to git --version output?

On Sep 18, 2009, at 12:17 AM, Nazri Ramliy wrote:
> +       printf("git version %s compiled %s %s\n",
> +                       git_version_string,
> +                       __DATE__,
> +                       __TIME__);
> Thoughts?

Any idea how compatible that is? Sure, it'll work with GCC's cpp, but we try to work with a huge variety of compilers.

At the very least you might want to wrap it all in #ifdefs or something:

#if defined(__DATE__) && defined(__TIME__) /* your version */ #else /* old version */ #endif

(Or play fun tricks with #ifndef ... #define, but then you also have to play with the format string or something.)

~~Brian
David Aguilar· Sep 18, 2009, 05:03 UTC · re: Nazri Ramliy · lore

Re: Add compiled date to git --version output?

On Fri, Sep 18, 2009 at 12:17:48PM +0800, Nazri Ramliy wrote:
> Sometimes I wanted to know how outdated git is on my system.
	$ ls -la $(which git)
Show 25 quoted lines
> Coming up with a script to parse "git --version" output to get the SHA1,
> and compare that to master's SHA1 seemed a little overkill compared to
> this:
> 
> diff --git a/help.c b/help.c
> index 294337e..bc83491 100644
> --- a/help.c
> +++ b/help.c
> @@ -361,6 +361,9 @@ const char *help_unknown_cmd(const char *cmd)
> 
>  int cmd_version(int argc, const char **argv, const char *prefix)
>  {
> -       printf("git version %s\n", git_version_string);
> +       printf("git version %s compiled %s %s\n",
> +                       git_version_string,
> +                       __DATE__,
> +                       __TIME__);
>         return 0;
>  }
> 
> With this, git --version gives:
> 
>         git version 1.6.5.rc1.19.g8426.dirty compiled Sep 18 2009 12:03:29
> 
> Thoughts?

For whatever it's worth, I would feel more comfortable if this were guarded behind an option e.g. 'git version --date'.

I suspect that there are a fair number of scripts out there parsing the output of 'git version'. 'git version' is not plumbing but we still might want to avoid breaking them.

Is it better to say "compiled on $date" or "compiled $date"?

It's meant to be informational (aka not an actual English sentence) so I guess it could go either way; "compiled on" is a little more proper, though.

What about "born on $date" since it gives users a subliminal suggestion that they should consider upgrading to a fresh git? ;)

-- 
	David
Junio C Hamano· Sep 18, 2009, 05:07 UTC · re: Nazri Ramliy · lore

Re: Add compiled date to git --version output?

Nazri Ramliy <ayiehere@gmail.com> writes:
Show 27 quoted lines
> Sometimes I wanted to know how outdated git is on my system.
>
> Coming up with a script to parse "git --version" output to get the SHA1,
> and compare that to master's SHA1 seemed a little overkill compared to
> this:
>
> diff --git a/help.c b/help.c
> index 294337e..bc83491 100644
> --- a/help.c
> +++ b/help.c
> @@ -361,6 +361,9 @@ const char *help_unknown_cmd(const char *cmd)
>
>  int cmd_version(int argc, const char **argv, const char *prefix)
>  {
> -       printf("git version %s\n", git_version_string);
> +       printf("git version %s compiled %s %s\n",
> +                       git_version_string,
> +                       __DATE__,
> +                       __TIME__);
>         return 0;
>  }
>
> With this, git --version gives:
>
>         git version 1.6.5.rc1.19.g8426.dirty compiled Sep 18 2009 12:03:29
>
> Thoughts?
It's open source, so you are welcome to do that to your binary.

Personally, I do not want it. My build scripts depend on the version string at the end if the output to omit re-building what is already installed.

Seriously, the version number is useful to track down the bug, and perhaps your compiler and library versions might be useful to help diagnose build related errors, but when would that __DATE__/__TIME__ be useful more than what "ls -l /usr/bin/git" would give you?

Nazri Ramliy· Sep 18, 2009, 06:04 UTC · re: Junio C Hamano · lore

Re: Add compiled date to git --version output?

Thanks for the input guys, I've come to the conclusion that the extra effort needed to properly implement this is not worth the benefit of the outcome.

As some of you mentioned, ls -l `which git` is better suited for the purpose, and that can be done universally for all files where the filesystem stores the create timestamp of each.

nazri.

← back to recent threads