On Sun, 16 Oct 2016 09:18:02 -0700 (PDT)
"Edward K. Ream" <edream...@gmail.com> wrote:

> At present, leoVersion.py gets version info by parsing 
> leo/core/commit_timestamp.json. There are at least two unacceptable 
> problems with this approach:
> 1. The dates don't get updated if a developer (like me!) forgets to
> install the git hooks.
> Just today I noticed that the last update was supposedly in July!

Heh, I don't think it's the end of the world if this happens, I guess
we / I could set up some sort of monitoring for that case, but just
noticing it (eventually) and installing the hooks works too.

> 2. Continually changing commit_timestamp.json creates merge conflicts.

Which can be resolved with 

  git checkout --ours leo/core/commit_timestamp.json

(seeing it's not that critical which one you use).

Certainly in a git repo. commit_timestamp.json isn't needed.
The point of it was to give useful, *fine grained* version ID in non-git
contexts. I think "you have to use git to use Leo" in an unreasonable
barrier, seeing not all Leo users are coders and therefore may never
use a VCS, and I usually point people to 
to get the current Leo.  There's no git repo. in that .zip.
fficial releases don't offer fine grained version info., the first
thing we'd tell someone with a problem to try is running the latest
code, and if they're getting it from master.zip, commit_timestamp.json
is useful.

So I'd argue for leaving commit_timestamp.json as is and living with
the two shortcomings you identified.  But if it's not bearable, we can
do something like you suggest.

> There is a much easier way. Rather than parsing
> commit_timestamp.json, we can get info about the last commit from
> "git log -1". Like this:
>     p = subprocess.Popen(
>         ["git", "log" , '-1', '--date=default-local'],
>         stdout=subprocess.PIPE,
>         shell=True,
>     )
>     out, err = p.communicate()
>     out = g.toUnicode(out)
>     m = re.search('commit (.*)\n', out)
>     commit = m.group(1)[0:8].strip() if m else ''
>     m = re.search('Date: (.*)\n', out)
>     date = m.group(1).strip() if m else '
> This works well in my tests.
> For official releases, we expect that git won't be installed, or that
> "git log" will fail because the official release contains no .git
> directory. Either way, the code will catch exceptions thrown by
> subprocess and return the official (static) release date defined in
> leoVersion.py.
> My release testing will ensure that this approach works.  Do you see
> any problems with it?
> Edward

You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to leo-editor+unsubscr...@googlegroups.com.
To post to this group, send email to leo-editor@googlegroups.com.
Visit this group at https://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to