On Sat, Mar 10, 2018 at 09:00:29AM -0800, John Ralls wrote:
> One possible solution would be to test the value of `git remote -v 2> 
> /dev/null | grep "origin.*(fetch)"`. If it’s either code or the Github mirror 
> then we set the version from `git describe`, otherwise it’s the ${VERSION} as 
> set in CMakeLists.txt.

This seems fragile.  (1) If someone's building from a clone of a clone, it will 
fail.  (2) The remote might not be called "origin" (e.g. I typically use 
"upstream").

Here's an idea: add a sentinel file to the git repo, but exclude it from the 
dist tarballs etc.  If the file exists in the source tree, you're building from 
the official git repo or a (possibly indirect) clone of same.  If it doesn't 
exist, you're building from something else (and I don't think it matters what 
variety of something-else -- tarball, tarball-checked-into-git, etc.)  The 
sentinel's content is irrelevant (unless for extra certainty you want the 
git-repo check to verify it); it's the file's presence or absence that matters.

This has the advantage of being VCS-agnostic, since it only looks at the 
working tree.

Or the sentinel could always exist, but its contents could provide the needed 
info. E.g. it's in the source tree with (hard-coded and git-committed) contents 
that say basically "I'm from git".  But the dist build puts into the tarball a 
variant that says, "My ultimate source is {release 2.7.5|official git commit 
123abc|<whatever else makes sense>}, but I'm not directly from there".  Not in 
those exact words, obviously.

What makes gnc-version.h and gnc-vcs-info.h unsuitable is that they're 
regenerated on a normal "make all" build, if necessary.  The key would be that 
the sentinel I'm suggesting is only generated at "make dist" time:
  - if you're building from an official repo (or clone), the file never changes
  - if you're building from a tarball, the file still never changes
It only changes at the transition between those two states, i.e. "make dist".

> ChangeLog is a bit harder [...] or maybe it should be simply dropped.

That would be unfortunate.  Even though the info is available elsewhere, it's 
good to have it encapsulated with the rest of the distribution.

  - Eric
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to