# git replace woes: dirty stat with clean workdir

2 messages from 2009-11-10 to 2009-11-10. Participants: Michael J Gruber, Christian Couder.
Thread: https://gitlist.dev/t/21570

## Michael J Gruber, 2009-11-10 16:21

Subject: git replace woes: dirty stat with clean workdir
Message-ID: <4AF992F8.8010309@drmicha.warpmail.net>
URL: https://gitlist.dev/e/4AF992F8.8010309%40drmicha.warpmail.net

```
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, 2009-11-10 23:33

Subject: Re: git replace woes: dirty stat with clean workdir
Message-ID: <200911110033.46546.chriscool@tuxfamily.org>
URL: https://gitlist.dev/e/200911110033.46546.chriscool%40tuxfamily.org
In-Reply-To: <4AF992F8.8010309@drmicha.warpmail.net>

```
Hi,

On mardi 10 novembre 2009, Michael J Gruber wrote:
> 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.

```
