Re: [RFC PATCH 0/1] adding user.hideTimezone for setting UTC timezone
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Oct 1, 2020, 03:43 UTC
- Message-ID
- <20201001034350.GB2930867@google.com>
- In-Reply-To
- <xmqqtuved70y.fsf@gitster.c.googlers.com>
Junio C Hamano wrote:
Show 7 quoted lines
> Our setenv() may not > be early enough---before the code that decides to call a setenv() > is run, there are many things that are outside your control (like > the tracing subsystem, repository discovery, etc.) will run, and if > any of them does something that triggers tzset() to be called, it > will be done with the value of TZ the process started with, and our > setenv() that happens much later won't have any effect to it.
I thought about this before, but in fact it's okay: when calling a function like localtime() (though not localetime_r() --- see my other reply), tzset() is called each time so it is able to reflect any updates to the TZ envvar from the interim.
[....]
Show 8 quoted lines
> You can let the existing code produce its natural result and then > when the "force UTC" flag is set, override the offset part to +0000 > if and only if the timezone was obtained from the current > environment (this if-and-only-if is necessary, because you do not > want to rewrite and force UTC when you run "git commit --amend" > without the "--reset-author" option to update a commit that was > created somewhere else to UTC). That way, we do not have to futz > with TZ environment or tzset.
Yes, I think this is simpler and nicer than the proposal in my other reply.
In addition to not having to futz with TZ, I think I like the semantics better. The motivation that started this thread was not so much "I want to set a custom timezone to blend in" but rather "why are we recording the timezone at all here?" In that context, it makes sense to me to have a setting such as
core.recordTimeZone
that I can turn *off* to say that I don't think datestamp() callers should consider the timezone to be information worth recording (and instead they should write +0000). To me that seems a little simpler to understand than user.hideTimezone since this focuses on turning some functionality off (recording of the time zone) instead of turning on a new stealth mode.
Thanks, Jonathan