threads / discuss / 21570

git replace woes: dirty stat with clean workdir

Subject: git replace woes: dirty stat with clean workdir

## tl;dr

2 messages between Nov 10, 2009 and Nov 10, 2009.

replies: 1people: 2as markdown or json

Michael J Gruber· Nov 10, 2009, 16:21 UTC · lore
Hi there,

when cooking up a "warning example" for git replace (don't draw premature conclusions when there are replaced objects) I came across the following problem: git status seems to compare the work dir with the tree of HEAD, not the replacing tree. Even deleting the index does not help.

[ The example also shows that we need a way to specify --no-replace-objects for gitk. Would easier if gitk really where git something. ]

Michael

#!/bin/sh rm -Rf rtest && mkdir rtest && cd rtest && git init && echo > comment && git add comment && git commit -m "empty comment" && echo nice > "comment" && git commit -am "nice comment" && echo ugly > "comment" && git commit -am "to be discarded" && git replace HEAD^^{tree} HEAD^{tree} && git reset --hard HEAD^ && git log -p && git st

Christian Couder· Nov 10, 2009, 23:33 UTC · re: Michael J Gruber · lore

Re: git replace woes: dirty stat with clean workdir

Hi,
On mardi 10 novembre 2009, Michael J Gruber wrote:
Show 7 quoted lines
> Hi there,
>
> when cooking up a "warning example" for git replace (don't draw
> premature conclusions when there are replaced objects) I came across the
> following problem: git status seems to compare the work dir with the
> tree of HEAD, not the replacing tree. Even deleting the index does not
> help.
Yeah, you are right. I must say that I never tested replacing trees before.
> [ The example also shows that we need a way to specify
> --no-replace-objects for gitk. Would easier if gitk really where git
> something. ]

Yeah, I think --no-replace-objects might not work well for shell scripts or even commands that call other commands using run_command(). Perhaps we need an environment variable GIT_NO_REPLACE_OBJECTS to be set by commands that are passed --no-replace-objects and checked by all the commands. I will have a look at that.

Thanks, Christian.

← back to recent threads