From: "Shupak, Vitaly" <Vitaly.Shupak@deshaw.com>
To: Johannes Sixt <j6t@kdbg.org>, Junio C Hamano <gitster@pobox.com>
Cc: "Udoff, Marc" <Marc.Udoff@deshaw.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Subject: RE: git filter bug
Date: Tue, 14 Jun 2022 19:11:56 +0000 [thread overview]
Message-ID: <d8ae6210ddf146d7bbd9c78d170fb803@deshaw.com> (raw)
In-Reply-To: <c2f49b4f-8588-bae1-97cf-91a36b3f16f9@kdbg.org>
Here's the behavior that I observe:
- If the mtime of the normal file changes from what's in the index but the content doesn't change, "git status" updates the index with the latest timestamp of the file.
- If the filtered file changes, but the size stays the same, git status also triggers an index update.
- BUT if the size of the filtered file changes, then the index does NOT get updated and the file appears modified on every git status run until you explicitly run "git add <filename>" again. This is true even if the post-clean filter content is the same as what's currently in the index.
- The clean filter runs on every "git status" call anyway, so this behavior does not appear to be an optimization.
So if a file is modified such that the post-clean filter content is the same as what's in the index, "git status" will show the file as modified only if the file size has also changed. It seems that perhaps "git status" is comparing file sizes before applying the clean filter to see if the index entry needs to be refreshed?
Vitaly
-----Original Message-----
From: Johannes Sixt <j6t@kdbg.org>
Sent: Monday, June 13, 2022 5:15 PM
To: Junio C Hamano <gitster@pobox.com>
Cc: Udoff, Marc <Marc.Udoff@deshaw.com>; Shupak, Vitaly <Vitaly.Shupak@deshaw.com>; git@vger.kernel.org
Subject: Re: git filter bug
This message was sent by an external party.
Am 13.06.22 um 19:29 schrieb Junio C Hamano:
> Johannes Sixt <j6t@kdbg.org> writes:
>
>> git status does not compute differences; it only looks at the stat
>> information, and that is by design for performance reasons. So, IMO,
>> this is working as designed and not a bug.
>
> Hmph, is that true? I thought "git status" did an equivalent of
> diff.autoRefreshIndex just like other commands like "git diff" at the
> Porcelain level.
Is it true? I don't know; you tell me ;) git status certainly does autoRefreshIndex, but is that based on a diff computation? I thought git status looks only at stat information.
> Is this more like the commonly seen "after you futzed the attributes
> to affect normalization, "--renormalize" is needed to force the index
> to match the cleaned version of working tree under the new clean
> filter rules", I wonder?
Not in this case. The modified file that git status reports happens long after git commit -a has already applied the new filter.
-- Hannes
next prev parent reply other threads:[~2022-06-14 19:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-10 22:19 git filter bug Udoff, Marc
2022-06-11 7:43 ` Johannes Sixt
2022-06-13 17:29 ` Junio C Hamano
2022-06-13 21:15 ` Johannes Sixt
2022-06-14 19:11 ` Shupak, Vitaly [this message]
2022-06-23 12:13 ` Udoff, Marc
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d8ae6210ddf146d7bbd9c78d170fb803@deshaw.com \
--to=vitaly.shupak@deshaw.com \
--cc=Marc.Udoff@deshaw.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).