Setting GIT_AUTHOR_* causes incorrect commit dates
Nathan Yergler <
nathan@...>
2012-04-14 21:40:48 GMT
Good afternoon,
I've been having a problem intermittently over the past month or so
that I finally took the time to track down yesterday. The symptom is
that I'd commit something to the git repository at work using magit,
and when I looked at the commit log, the date was in the past. This
was first pointed out to me by a co-worker who asked if I'd managed to
invent a time machine: fixing a bug we discovered yesterday a week ago
is a pretty neat party trick. Once I confirmed that I truly was not
Dr. Sam Beckett [1], I decided to track down the problem.
Yesterday I noticed that a commit made through Magit had the incorrect
date, while a commit made from the command line (outside of Emacs) had
the correct date. When I started looking at magit.el, I found the
setting of GIT_AUTHOR_DATE in magit-log-edit-setup-author-env. My
hypothesis, which I was able to confirm, is that when you rewrite a
commit, GIT_AUTHOR_DATE is set. However, despite the fact
process-environment is set up as a local variable, the setting
persists -- running (get-env "GIT_AUTHOR_DATE") in *scratch* after
rewriting a commit returns the rewritten commit's date. Future commits
will all have the same date as the last rewritten commit.
I started to go down the path of clearing the GIT_AUTHOR_* variables
from the process-environment when no author is present, but that would
preclude setting them outside of Emacs. I wonder if instead magit
should specify --author and/or --date to the command line if the
author information is present.
Does that seem reasonable? Has anyone else run into this issue?
(Continue reading)