Shengfa Lin <shengfa@xxxxxxxxxx> writes: > Users requested hiding location in the world from source control > trail. This is an implementation to read user.hideTimezone in > cmd_commit and set timezone to UTC if it's true. Not a very good proposed log message, that sounds as if "it is what 'Users' requested, so it must be a worthwhile thing to do", which is not the line of thinking to go by. > > Added a brief explanation of the new field in Documentation > and added tests for true/false and reset-author > > Signed-off-by: Shengfa Lin <shengfa@xxxxxxxxxx> > --- > Documentation/config/user.txt | 4 ++++ > builtin/commit.c | 5 +++++ > t/t7527-commit-hide-timezone.sh | 37 +++++++++++++++++++++++++++++++++ > 3 files changed, 46 insertions(+) > create mode 100755 t/t7527-commit-hide-timezone.sh > > diff --git a/Documentation/config/user.txt b/Documentation/config/user.txt > index 59aec7c3ae..bd6813f527 100644 > --- a/Documentation/config/user.txt > +++ b/Documentation/config/user.txt > @@ -36,3 +36,7 @@ user.signingKey:: > commit, you can override the default selection with this variable. > This option is passed unchanged to gpg's --local-user parameter, > so you may specify a key using any method that gpg supports. > + > +user.hideTimezone:: > + Override TZ to UTC for Git commits to hide user's timezone in commit > + date > diff --git a/builtin/commit.c b/builtin/commit.c > index 42b964e0ca..fb1cbb8a39 100644 > --- a/builtin/commit.c > +++ b/builtin/commit.c > @@ -1569,6 +1569,11 @@ int cmd_commit(int argc, const char **argv, const char *prefix) > status_format = STATUS_FORMAT_NONE; /* Ignore status.short */ > s.colopts = 0; > > + git_config(git_default_config, NULL); > + int hide_timezone = 0; > + if (!git_config_get_bool("user.hideTimezone", &hide_timezone) && hide_timezone) > + setenv("TZ", "UTC", 1); > + > if (get_oid("HEAD", &oid)) > current_head = NULL; > else { > diff --git a/t/t7527-commit-hide-timezone.sh b/t/t7527-commit-hide-timezone.sh > new file mode 100755 > index 0000000000..41ed9c27da > --- /dev/null > +++ b/t/t7527-commit-hide-timezone.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > + > +test_description='git-commit can override local timezone setting by reading user.hideTimezone from config' > + > +. ./test-lib.sh > + > +test_expect_success 'commit date shows timezone offset +0300 when user.hideTimezone is false' ' > + git config user.hideTimezone false && > + echo test1 >> file && > + git add file && > + # unset GIT_AUTHOR_DATE from test_tick > + unset GIT_AUTHOR_DATE && > + TZ=Europe/Istanbul git commit -m initial && > + git log -1 > output && > + grep "Date: .* +0300" output > +' > + > +test_expect_success 'commit date shows timezone offset +0000 when user.hideTimezone is true and reset' ' > + git config user.hideTimezone true && > + git commit --amend --reset-author && > + git log -1 > output && > + grep "Date: .* +0000" output > +' > + > +test_expect_success 'commit date shows timezone offset +0000 even TZ setting says otherwise' ' > + git config user.hideTimezone true && > + echo test2 >> file && > + git add file && > + # TZ setting corresponding to -0600 or -0500 depending on DST > + # unset GIT_AUTHOR_DATE from test_tick > + unset GIT_AUTHOR_DATE && > + TZ=America/Chicago git commit -m test2 && > + git log -1 > output && > + grep "Date: .* +0000" output > +' > + > +test_done