On Jan 31, 2011, at 8:49 AM, Derek Atkins wrote:

> John Ralls <jra...@ceridwen.us> writes:
> 
>> On Jan 31, 2011, at 7:50 AM, Derek Atkins wrote:
>> 
>>> John Ralls <jra...@ceridwen.us> writes:
>>> 
>>>> The versions table is defined with an int in the second field, which is 
>>>> why the git hash isn't writing.  There's likely an error message about 
>>>> that in Geert's gnucash.trace.
>>>> 
>>>> So we can use a serial number in gnc-version.h or construct an int out of 
>>>> the release version in configure (perhaps with a "micro" component added 
>>>> in on trunk for when we need to change things between releases). I'm 
>>>> inclined towards the latter, because it's mostly automatic. Do you really 
>>>> feel strongly about having a serial number instead?
>>> 
>>> I think generating something from the version number would be fine, if
>>> we can figure out some way to handle it (sort of like a DNS SOA serial
>>> number).  Something like GnuCash version x.y.z -> XXYYZZVV
>>> 
>>> The hard question is:  how do we encode the 'VV' version such that it
>>> gets reset to 0 whenever we reset the gnucash version in configure.ac?
>>> 
>>> Any system we use has risks and problems.
>> 
>> Well, I implemented exactly that over the weekend. "VV" is
>> GNUCASH_NANO_VERSION, and it's in configure.ac right underneath the
>> AC_INIT that sets the rest of the versions so that it will be easy to
>> remember to zero out when the version number gets bumped.
> 
> Yeah, I saw that as I was going through the patches after I sent this.
> How is this any different than just setting a number in
> e.g. gnc-sql-schema-version.h?  A developer still needs to remember to
> update the nano-version any time they make a schema change..
> 
> But the current method also means that gnucash 2.4.2 and 2.4.3 would
> consider themselves different even if the schema does not change.

Yes, it does still depend on a developer remembering to increment the 
nano-version if he changes something (and as I keep pointing out, it can be a 
change in engine, business, or qof, not just the schema). But remember that 
there are two components: The actual version which last touched the database 
(Gnucash version) and the GNC_RESAVE_VERSION which marks the boundary for 
too-new and too-old. Too-old will force a resave, too-new will force read-only. 
That's currently declared in gnc-backend-sql.h; I should probably move it to 
configure as well so that it's more visible.

Regards,
John Ralls

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

Reply via email to