Re: [PATCH] Add --show-touched option to show "diff --git" line when contents are unchanged
- From
Matthieu Moy <matthieu.moy@imag.fr>
- Date
- Aug 5, 2007, 19:42 UTC
- Message-ID
- <vpqr6mhahtx.fsf@bauges.imag.fr>
- In-Reply-To
- <7vlkcskx5z.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <gitster@pobox.com> writes:
Show 11 quoted lines
> Matthieu Moy <Matthieu.Moy@imag.fr> writes: > >>> "git-status $args" on the other hand is a preview of "what would >>> happen if I say 'git-commit $args'", and in order to compute >>> that, you would fundamentally need to be able to write into the >>> object store. In a special case of giving empty $args it can be >>> read-only. >> >> Can you give an example where it _could_ not be read-only? > > Think of what "git commit -a" would have to do.
I don't know whether it was a typo, but we're not talking about "commit", but "status".
> It needs to hash and deposit a new object for blobs that have been > modified. Where do those new blob object go?
git-status _does_ hash and deposit new objects, but it doesn't _need_ to. It can very well show you what "commit -a" would do without actually doing it.
A trivial (and very stupid, yes) way to do this would be
cp -r . /tmp/git/ cd /tmp/git git-status -a
There's no visible side-effects for the user.
IIRC, git-status -a does actually "git-add" the modified objects, but does so in a temporary index, so I believe the objects you leave in the objects database are not pointed to by anyone (indeed, I just checked, git-fsck --unreachable shows the dangling blob), and are not really useful (but will probably be used later when you run commit or add).
Show 6 quoted lines
> Maybe in a theoretical ideal world, you might prefer to > reverting back to the stat-dirty original index to make > git-status appear a read-only operation, with continued degraded > performance. You are welcome to reimplement it that way, and > the patch should be trivial (while git-commit.sh is still a > script, at least) but that is not what we did.
You still didn't understand my point about the difference between user-specification and internal behavior. I'm very happy with git-status updating the stat information in the index, since it is not suppose to have user-visible side effects (it has with the current empty-diff-for-touched-files behavior of git-diff).
Now, at that point, if I still didn't manage to show you the difference between user-visible behavior and implementation, I believe I have no better thing to do than giving up.
-- Matthieu