On 3 April 2018 at 01:02, Eliot Miranda <eliot.miranda@gmail.com> wrote:
Hi Alistair, Hi Ben,
On Apr 2, 2018, at 9:28 AM, Alistair Grant <akgrant0710@gmail.com> wrote:
Hi Ben,
On 2 April 2018 at 15:42, Ben Coman <btc@openinworld.com> wrote:
On 2 April 2018 at 20:26, Alistair Grant <akgrant0710@gmail.com> wrote:
On Sun, Apr 01, 2018 at 10:46:14AM -0700, Eliot Miranda wrote: Hi Alistair,
_,,,^..^,,,_ (phone)
On Mar 31, 2018, at 1:42 PM, Alistair Grant <akgrant0710@gmail.com> wrote:
git doesn't provide a substitution mechanism like sccs, but the script we have that embeds the date can just as easily embed the hash. In .git_filters/RevDateURL.smudge there's a line that retrieves the commit date from git:
$date = `git log --format=%ad -1`;
to get the (short) hash we can simply add:
$shorthash = `git log --format=%h -1`;
The string substitution can then proceed as for the date.
I think it would be worthwhile having both the date and hash in the --version info.
I'm happy to add this in and update the --version output if there's general agreement.
Yes please!!! The conventional alternative is to invoke git log from the makefiles and lass in the commit hash as a compiler-line default me. But this is messy and slows down compilation (unless there is a special rule for just one file, and that's fragile). I much prefer having the commit somewhere in source.
Done:
$ git log --oneline | head 5a5b1c7 vm version string: add commit short hash 4c4686e Skip SUnit testing in Sista builds 79c0809 Merge pull request #230 from smalltalking/Cog 804ed5c Fixed typo in the download URL
$ products/cogspur64linuxht/pharo --version 5.0-201804012008-version_hash Sun Apr 1 22:15:07 CEST 2018 gcc 5.4.0 [Production Spur 64-bit VM] CoInterpreter VMMaker.oscog-eem.2361 uuid: 7ca2f89a-de70-422f-b92b-54f91ac4e47b Apr 1 2018 StackToRegisterMappingCogit VMMaker.oscog-eem.2361 uuid: 7ca2f89a-de70-422f-b92b-54f91ac4e47b Apr 1 2018 VM: 201804012008-version_hash alistair@4c0a4b2bdb79:vmmaker/opensmalltalk-vm $ Date: Sun Apr 1 22:08:11 2018 +0200 $ Hash: 5a5b1c7 $
Maybe rather than just "Hash:" could it be more explicit as "GitHash:" or even "GitSHA1:" One day the algorithm is likely to change... "Moving Git past SHA-1" (https://lwn.net/Articles/715716/) and it may be useful later to be able to distinguish.
I like "GitHash" as it may not be obvious what the hash refers to for a newcomer. Even if/when git moves away from sha1, from a cli/ui perspective presumably it will still just be "the hash".
Commit Hash? Commit Hash (git)? C Commit Hash? Repository Commit Hash?
We've already moved from one sccs to another for the C code and may move again if anyone improves on git, which is not inconceivable.
Makes sense, CommitHash it is. I've updated the PR. But since Nicolas and Fabio are busy working on getting the build and deploy pipe-line working I'll wait a bit before merging rather than potentially derailing their work (thanks, guys!). Cheers, Alistair
Plugins: 201804012008-version_hash alistair@4c0a4b2bdb79:vmmaker/opensmalltalk-vm $ Linux 4c0a4b2bdb79 4.13.0-37-generic #42~16.04.1-Ubuntu SMP Wed Mar 7 16:03:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux plugin path: products/cogspur64linuxht/lib/pharo/5.0-201804012008-version_hash [default: /home/alistair/vmmaker/opensmalltalk-vm/products/cogspur64linuxht/lib/pharo/5.0-201804012008-version_hash/]
As expected, the hash is also included in:
- the VirtualMachine object (in Pharo, and the equivalent in squeak)
I presume this is what shows up under System > System Reporter ?
Yes.
- crash.dmp - kill -USR1 output
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/233 if anyone wants to take a look.
An interesting insight for me into how the version info is generated. thx.
Glad it was useful. :-)
Thanks for your feedback. I'll update the PR (probably tomorrow).
Cheers, Alistair