threads / discuss / 58494

git diff-index considers touched files as dirty and changes behaviour

Subject: git diff-index considers touched files as dirty and changes behaviour

## tl;dr

2 messages between Sep 22, 2022 and Sep 22, 2022.

replies: 1people: 2as markdown or json

Lindeke, Cord· Sep 22, 2022, 14:11 UTC · lore
What did you do before the bug happened? (Steps to reproduce your issue)
> touch README.md
> git diff-index --exit-code HEAD
:100644 100644 64c1efecd5716f56155b806caaf9fa6a771fae47 0000000000000000000000000000000000000000 M      README.md
> echo $?
1
> git status

On branch master Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
> git diff-index --exit-code HEAD
> echo $?
0

What did you expect to happen? (Expected behavior) The first "git diff-index" should not detect any differences, but return 0 instead.

What happened instead? (Actual behavior) The first "git diff-index" considers the touched README.md as dirty and returns 1. Somehow, calling "git status" fixes this behaviour so that the second "git diff-index" behaves as expected.

What's different between what you expected and what actually happened? The result of the first "git diff-index" should have been 0. And the behaviour should not alter at all with calling any other git commands like "git status" or "git diff" in between.

Anything else you want to add: The same issue holds true for "git diff-files".

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info] git version: git version 2.37.3 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 4.15.0-193-generic #204-Ubuntu SMP Fri Aug 26 19:20:21 UTC 2022 x86_64 compiler info: gnuc: 7.5 libc info: glibc: 2.27 $SHELL (typically, interactive shell): /bin/bash

[Enabled Hooks]

Best regards Cord Lindeke Sr. Software Specialist cord.lindeke@softwareag.com Software AG, Uhlandstrasse 12, 64297 Darmstadt, Germany

Software AG – Sitz/Registered office: Uhlandstraße 12, 64297 Darmstadt, Germany – Registergericht/Commercial register: Darmstadt HRB 1562 - Vorstand/Management Board: Sanjay Brahmawar (Vorsitzender/Chairman), Dr. Elke Frank, Dr. Matthias Heiden, Dr. Stefan Sigg, Dr. Benno Quade, Joshua Husk - Aufsichtsratsvorsitzender/Chairman of the Supervisory Board: Christian Lucas - https://www.softwareag.com
Phillip Wood· Sep 22, 2022, 15:20 UTC · re: Lindeke, Cord · lore

Re: git diff-index considers touched files as dirty and changes behaviour

Hi Cord
On 22/09/2022 15:11, Lindeke, Cord wrote:
Show 25 quoted lines
> What did you do before the bug happened? (Steps to reproduce your issue)
>> touch README.md
>> git diff-index --exit-code HEAD
> :100644 100644 64c1efecd5716f56155b806caaf9fa6a771fae47 0000000000000000000000000000000000000000 M      README.md
>> echo $?
> 1
>> git status
> On branch master
> Your branch is up to date with 'origin/master'.
> 
> nothing to commit, working tree clean
>> git diff-index --exit-code HEAD
>> echo $?
> 0
> 
> What did you expect to happen? (Expected behavior)
> The first "git diff-index" should not detect any differences, but return 0 instead.
> 
> What happened instead? (Actual behavior)
> The first "git diff-index" considers the touched README.md as dirty and returns 1.
> Somehow, calling "git status" fixes this behaviour so that the second "git diff-index" behaves as expected.
> 
> What's different between what you expected and what actually happened?
> The result of the first "git diff-index" should have been 0.
> And the behaviour should not alter at all with calling any other git commands like "git status" or "git diff" in between.

It is working as expected. diff-files and diff-index are "plumbing" commands designed for use in scripts and require the index to be refreshed with "git update-index --refresh" before they are called. "git diff" and "git status" are "porcelain" commands designed for users and refresh the index as the first step.

Best Wishes
Phillip
Show 44 quoted lines
> Anything else you want to add:
> The same issue holds true for "git diff-files".
> 
> Please review the rest of the bug report below.
> You can delete any lines you don't wish to share.
> 
> 
> [System Info]
> git version:
> git version 2.37.3
> cpu: x86_64
> no commit associated with this build
> sizeof-long: 8
> sizeof-size_t: 8
> shell-path: /bin/sh
> uname: Linux 4.15.0-193-generic #204-Ubuntu SMP Fri Aug 26 19:20:21 UTC 2022 x86_64
> compiler info: gnuc: 7.5
> libc info: glibc: 2.27
> $SHELL (typically, interactive shell): /bin/bash
> 
> 
> [Enabled Hooks]
> 
> Best regards
> Cord Lindeke
> Sr. Software Specialist
> cord.lindeke@softwareag.com
> Software AG, Uhlandstrasse 12, 64297 Darmstadt, Germany
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Software AG – Sitz/Registered office: Uhlandstraße 12, 64297 Darmstadt, Germany – Registergericht/Commercial register: Darmstadt HRB 1562 - Vorstand/Management Board: Sanjay Brahmawar (Vorsitzender/Chairman), Dr. Elke Frank, Dr. Matthias Heiden, Dr. Stefan Sigg, Dr. Benno Quade, Joshua Husk - Aufsichtsratsvorsitzender/Chairman of the Supervisory Board: Christian Lucas - https://www.softwareag.com

← back to recent threads