<div dir="ltr"><br><div class="GmSign">-- <br></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Jun 18, 2016 at 11:06 AM Ben Coman <<a href="mailto:btc@openinworld.com">btc@openinworld.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On Sat, Jun 18, 2016 at 11:28 AM, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>> wrote:<br>
><br>
> Hi Ben,<br>
><br>
> On Fri, Jun 17, 2016 at 8:27 AM, Ben Coman <<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>> wrote:<br>
>><br>
>><br>
>> On Fri, Jun 17, 2016 at 3:40 PM, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>> wrote:<br>
>> ><br>
>> >> On Jun 17, 2016, at 12:22 AM, Tim Felgentreff <<a href="mailto:timfelgentreff@gmail.com" target="_blank">timfelgentreff@gmail.com</a>> wrote:<br>
>> >><br>
>> >>> On 16 June 2016 at 22:07, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>> wrote:<br>
>> >>> Hi All,<br>
>> >>><br>
>> >>> so after fixing "git remote get-url origin" to fail over to "git remote<br>
>> >>> show origin | filter and munge" the culture shock of "git commit -a" (git<br>
>> >>> commit does nothing ?!?!?) I have a VM that outputs a reasonable version<br>
>> >>> info:<br>
>> >>><br>
>> >>> /Users/eliot/oscogvm/build.macos32x86/squeak.cog.spur/CocoaFast.app/Contents/MacOS/Squeak<br>
>> >>> 5.0 5.0.201606161953 Mac OS X built on Jun 16 2016 12:56:52 PDT Compiler:<br>
>> >>> 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57) [Production Spur VM]<br>
>> >>> CoInterpreter VMMaker.oscog-eem.1886 uuid:<br>
>> >>> d413db9f-37cc-4c5d-bfc6-87b11203ee96 Jun 16 2016<br>
>> >>> StackToRegisterMappingCogit VMMaker.oscog-eem.1886 uuid:<br>
>> >>> d413db9f-37cc-4c5d-bfc6-87b11203ee96 Jun 16 2016<br>
>> >>> VM: r201606161953 <a href="http://github.com/OpenSmalltalk/vm" rel="noreferrer" target="_blank">http://github.com/OpenSmalltalk/vm</a> $ Date: Thu Jun 16<br>
>> >>> 12:53:33 2016 -0700 $<br>
>> >>> Plugins: r201606161953 <a href="http://github.com/OpenSmalltalk/vm" rel="noreferrer" target="_blank">http://github.com/OpenSmalltalk/vm</a> $<br>
>> >>><br>
>> >>> Which begs the question how do I differentiate this from something built<br>
>> >>> officially via Travis? Arguably the URL is wrong, and should only say<br>
>> >>> "<a href="http://github.com/OpenSmalltalk/vm" rel="noreferrer" target="_blank">http://github.com/OpenSmalltalk/vm</a>" for travis builds, and perhaps should<br>
>> >>> just include my local hostname and current directory when I make any kind of<br>
>> >>> local modification. So the above would read<br>
>> >>><br>
>> >>> ...<br>
>> >>> VM: r201606161953 McStalker:?users/eliot/oscogvm $ Date: Thu Jun 16 12:53:33<br>
>> >>> 2016 -0700 $<br>
>> >>> Plugins: r201606161953 McStalker:?users/eliot/oscogvm $<br>
>> >>><br>
>> >>> Alternatively we could add another field, or modify one of the existing<br>
>> >>> fields to say "I'm official" however one would do that. I don't know how, I<br>
>> >>> just know we need this. I shouldn't be able to pollute the VM pool by<br>
>> >>> putting some VM on some site somewhere that i just happened to build after<br>
>> >>> several sherries and some cannabis brownies that looks to all intents and<br>
>> >>> purposes just like a VM built by our official Travis slaves. Hic. Chillin'<br>
>><br>
>> I just discovered git-describe, which seems like it could be useful...<br>
>> <a href="http://alblue.bandlem.com/2010/11/automatically-tagging-builds-with-git.html" rel="noreferrer" target="_blank">http://alblue.bandlem.com/2010/11/automatically-tagging-builds-with-git.html</a><br>
>><br>
>> So if Travis created "r201606161953" as an *official* tag for<br>
>> successful builds like this...<br>
>> <a href="https://github.com/travis-ci/travis-ci/issues/1476" rel="noreferrer" target="_blank">https://github.com/travis-ci/travis-ci/issues/1476</a><br>
>><br>
>> then `git describe` would produce "r201606161953" for that build, and<br>
>> after a couple of commits in my personal repo would produce<br>
>> "r201606161953-2-g169d02a". The "-2-g169d02a" would distinguish<br>
>> non-official builds.<br>
>><br>
>> In addition, I can now copy-paste a VM's output revision string<br>
>> to directly do "git checkout r201606161953"<br>
>> instead of "git checkout master@{2016-06-16 19:53} which I read is<br>
>> only viable for 90 days anyway, and has some complexity between<br>
>> whether the given date is author commit date or merge date.<br>
>><br>
>> But after doing "git checkout r201606161953" in my personal repo<br>
>> git describe<br>
>> ==> r201606161953 is indistinguishable from the Travis build<br>
>> but...<br>
>> git describe --long<br>
>> ==> r201606161953-0-a264e03b is distinguishable.<br>
>><br>
>> In addition, if I edit some files and rebuild before committing I<br>
>> want to distinguish this from when I build a fresh check out , which<br>
>> can be done with...<br>
>> git describe --long --dirty ==> r201606161953-0-a264e03b-dirty<br>
>><br>
>> So that last would be used to version personal builds,<br>
>> while Travis would use "git describe" without any flags.<br>
>> ==> r201606161953<br>
><br>
><br>
> Sounds really good, but<br>
><br>
> McStalker.oscogvm$ uname -a<br>
> Darwin McStalker 13.4.0 Darwin Kernel Version 13.4.0: Mon Jan 11 18:17:34 PST 2016; root:xnu-2422.115.15~1/RELEASE_X86_64 x86_64<br>
> McStalker.oscogvm$ git --version<br>
> git version 1.9.5 (Apple Git-50.3)<br>
> McStalker.oscogvm$ git describe<br>
> fatal: No names found, cannot describe anything.<br>
> McStalker.oscogvm$ git describe --long<br>
> fatal: No names found, cannot describe anything.<br>
> McStalker.oscogvm$<br>
<br>
That confused me also for a moment. Its only because there are not<br>
yet any tags.<br>
Try this...<br>
$ git tag -a mytag -m "my message"<br>
$ git describe --long --dirty<br>
$ touch x<br>
$ git add x<br>
$ git commit -m "blah de blah"<br>
$ git describe --long --dirty<br>
$ echo blah > x<br>
$ git describe --long --dirty<br>
<br>
Plus these tags can be applied retroactively without affecting history...<br>
<a href="https://git-scm.com/book/en/v2/Git-Basics-Tagging" rel="noreferrer" target="_blank">https://git-scm.com/book/en/v2/Git-Basics-Tagging</a><br>
<br>
cheers -ben<br></blockquote><div><br></div><div><span style="font-size:13px">It might be a good idea to tag the last (or first?) commit after the migration. But how do we do tagging? Have we decided on anything yet (e.g. [1])? Shall we start with v1.0.0 or shall v1.0.0 be the very first stable release of the OpenSmalltalk VM? Or would `</span>201606171704` be a tag?<span style="font-size:13px;line-height:1.5"> We certainly shouldn't confuse people with these numbers and the version number of the VM.</span></div><div><span style="font-size:13px"><br></span></div><div><span style="font-size:13px">Cheers,</span></div><div><span style="font-size:13px">Fabio</span></div><div><span style="font-size:13px"><br></span></div><div>[1] <a href="http://semver.org/">http://semver.org/</a></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
>> >> how secure does this need to be? One way to differentiate the official<br>
>> >> VMs is to sign them directly on Travis (which we'll want to do anyway,<br>
>> >> just didn't get to it, yet).<br>
>> >><br>
>> >> Another option is to just change the URL replacement code to do<br>
>> >> something else when not running on Travis --- like adding your<br>
>> >> hostname and path instead --- but this could be fairly easily messed<br>
>> >> with.<br>
>> >><br>
>> >> Not sure how much malicious intent we want to prevent.<br>
>><br>
>> Later on we should have Travis signing its build artefacts, but for<br>
>> now keep it simple.<br>
><br>
><br>
> The Mac builds already sign provided a certificate is installed and an environment variable set to point to it. See SIGNING_IDENTITY in build.macos*/common/Makefile.app<br>
><br>
>><br>
>><br>
>> ><br>
>> > None. I don't think there's malicious intent at all. I do think we should differentiate between "personal" and Travis builds. It's more for my own information, so u don't get confused, than to prevent maliciousness. So do the simplest thing that could possibly work TSTTCPW. I like username,host name,path as in an scp, eg eliot@McStalker:oscogvm (path relative to ~eliot).<br>
>><br>
>> I think `git branch` is as important as `path`.<br>
>> Username could come from `git config <a href="http://user.name" rel="noreferrer" target="_blank">user.name</a> | sed 's/ //g'<br>
</blockquote></div></div>