Reputation: 1343
I was looking through some logs in a submodule today (somewhat furiously) and typed some errors into the dates in the command
git log --since="2019-12-31" --oneline | wc -l
90
and instead of typing that I typed,
git log --since="2019-12=31" --oneline | wc -l
2147
I was alarmed by the difference is count which is why I was able to notice the error immediately. However, I'm unclear as to what the behavior is in this case. Is this a bug or is this expected behavior for git log
?
I would expect an error in parsing but it looks like the logs go back to January or February of 2019.
Upvotes: 3
Views: 272
Reputation: 249153
It appears that Git's date parsing just stops when it gets to a part it can't understand. For example "2015-13" is understood as "2015", as is "2015-4444".
In your case, it's treating "2019-12=31" as "2019". And then a second weird "feature" kicks in: --since 2019
does not mean --since 2019-01-01
, it means "since today's date in 2019". So the meaning of your --since 2019-12-31
will actually change throughout each year when you run it!
What seems to be happening is:
--since
, ignoring the month and day part if the parser cannot decide how to parse it.Note that even the simple and "obviously correct" git log --since 2019-12-31
does not really do what one might expect, because it shows commits since the current time on that day, not since midnight. So unless you specify a full date-time string, there will always be some dependency on the time when the command is executed.
Upvotes: 4