Thread (3 messages) flat view 3 messages, 2 authors, 2016-06-15

Re: behaviour of git diff, GIT_DIR & checked out tree

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:36

Hi,

On Mon, 24 Sep 2007, David Tweed wrote:
In a git tracked tree rooted at $HOME/V with
git-dir of $HOME/V/.git, if I'm in $HOME/V then

git diff master@{midnight}

tells me the difference between the current modified files
in the tree being tracked in V and the specified commit. In
a different directory, OUTSIDE of $HOME/V, I tried

env GIT_DIR=$HOME/V/.git git diff master@{midnight}

to get the same effect but, whilst I do get a diff output, it
looks like a diff of the commit against an empty tree.
Yes, this is fully expected.

The @{time} notation accesses the _reflogs_, which are purely local 
beasts.  They are not transmitted when cloning.

The rationale: in a distributed environment, you cannot trust others' 
timestamps.  Therefore we don't.

We can only (to a certain extent, at least) trust our _own_ timestamp.  
That is why we have timestamp access to the reflogs (which are purely 
local, as I mentioned above), but we have no way to reference commits by 
timestamp otherwise.

Hth,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help