On Tue, Mar 09, 2010 at 07:58:11AM +0100, Sergio Callegari wrote:
I actually did not know about the
update-index --refresh
This is a plumbing commmand, which normally users should not use
directly, but when you copy your repo by hands or do something like
that, you may need it (or use "git diff").
but now I have the relevant information its name sounds obvious.
And I suspected something like inode data entering the game.
As a matter of fact, I was obtaining the same effect with git diff.
Because "git diff" refreshes the cached stat information internally,
in the same way as "update-index --refresh". Junio wrote about this
recently:
http://article.gmane.org/gmane.comp.version-control.git/141708
What was appearing to me as a quirk is that:
1) If you do not refresh the index, git works perfectly all the
same. For instance, git status shows the right info. Only it is not
that fast anymore, since everytime it needs to runs the filters on
all the files.
2) git status does not refresh the index, while other commands like
git diff do.
Historically, "git status" was just the dry-run mode of "git commit". I
do not think that "git commit" should refresh the index. But in Git 1.7,
"git status" is no longer the dry-run mode of "git commit", so I see no
reason why it does not refresh the cached stat info internally...
Dmitry
Johannes Sixt wrote:
Junio C Hamano schrieb:
quoted
I didn't fully read what you wrote but after you copy a repository from
one to another outside git (be it done with unison or rsync), you should
run "update-index --refresh".
And the reason for this is that git also looks at the inode numbers, and I
guess that unison does not go as far as to preserve them between machines...
-- Hannes
Thanks for all the info... and sorry for the too verbose post at the
beginning.
I actually did not know about the
update-index --refresh
but now I have the relevant information its name sounds obvious. And I
suspected something like inode data entering the game.
As a matter of fact, I was obtaining the same effect with git diff.
What was appearing to me as a quirk is that:
1) If you do not refresh the index, git works perfectly all the same.
For instance, git status shows the right info. Only it is not that fast
anymore, since everytime it needs to runs the filters on all the files.
2) git status does not refresh the index, while other commands like git
diff do.
I was wandering whether git status could refresh the index
automatically, at least about those files on which expensive actions,
such as running filters had already been performed anyway.
Sergio
Sergio
Junio C Hamano schrieb:
I didn't fully read what you wrote but after you copy a repository from
one to another outside git (be it done with unison or rsync), you should
run "update-index --refresh".
And the reason for this is that git also looks at the inode numbers, and I
guess that unison does not go as far as to preserve them between machines...
-- Hannes