diff mbox series

Bug in 2.26.2 regading "git diff --cached"?

Message ID 625FED5E020000A10004978D@gwsmtp.uni-regensburg.de (mailing list archive)
State New, archived
Headers show
Series Bug in 2.26.2 regading "git diff --cached"? | expand

Commit Message

Ulrich Windl April 20, 2022, 11:24 a.m. UTC
Hi!

I just added interactively one hunk and committed it, just to find out that I wanted to include another hunk (that would need editing).
So I reset to the previous commit, added the two correct hunks again, and then did "git diff --cached".
I was surprised to find only one of the two hunks I've added in the diff.
The likely reason is that one of thoise hunks had been committed, but that commit was reset.

Some details:
(reflog)
ebd6e6c (HEAD -> rfc-5424-message) HEAD@{0}: reset: moving to ebd6e6c8af5b9eaa809a114ee6a972114b3f6a86
6997ce5 HEAD@{1}: commit: Remove call to Class::_fake_load(__PACKAGE__)
ebd6e6c (HEAD -> rfc-5424-message) HEAD@{2}: commit: Fix RE_day in lib/RFC_5424_Message.pm

So 6997ce5 was the incomplete commit.

> git status
On branch rfc-5424-message
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   lib/Message.pm
        modified:   lib/UnknownMessage.pm

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   lib/Message.pm
        modified:   lib/MessageLogFormat.pm
        modified:   lib/RFC_3164_Message.pm
        modified:   lib/RFC_5424_Message.pm
        modified:   syslogd.pl

So there are two files with changes to commit.
"git diff --cached -M" outputs only one chink, however:

Comments

Ulrich Windl April 20, 2022, 11:31 a.m. UTC | #1
Hi again!

It seems the issue was caused by the specific edit of the hunk.
I cannot remember that there was an error message, but I reset the adds again and re-edited the hunk.
This time the "diff --cached" showed the change for both files.

Regards,
Ulrich

>>> Ulrich Windl schrieb am 20.04.2022 um 13:24 in Nachricht <625FED5E.C7A : 161 :
60728>:
> Hi!
> 
> I just added interactively one hunk and committed it, just to find out that 
> I wanted to include another hunk (that would need editing).
> So I reset to the previous commit, added the two correct hunks again, and 
> then did "git diff --cached".
> I was surprised to find only one of the two hunks I've added in the diff.
> The likely reason is that one of thoise hunks had been committed, but that 
> commit was reset.
> 
> Some details:
> (reflog)
> ebd6e6c (HEAD -> rfc-5424-message) HEAD@{0}: reset: moving to 
> ebd6e6c8af5b9eaa809a114ee6a972114b3f6a86
> 6997ce5 HEAD@{1}: commit: Remove call to Class::_fake_load(__PACKAGE__)
> ebd6e6c (HEAD -> rfc-5424-message) HEAD@{2}: commit: Fix RE_day in 
> lib/RFC_5424_Message.pm
> 
> So 6997ce5 was the incomplete commit.
> 
> > git status
> On branch rfc-5424-message
> Changes to be committed:
>   (use "git restore --staged <file>..." to unstage)
>         modified:   lib/Message.pm
>         modified:   lib/UnknownMessage.pm
> 
> Changes not staged for commit:
>   (use "git add <file>..." to update what will be committed)
>   (use "git restore <file>..." to discard changes in working directory)
>         modified:   lib/Message.pm
>         modified:   lib/MessageLogFormat.pm
>         modified:   lib/RFC_3164_Message.pm
>         modified:   lib/RFC_5424_Message.pm
>         modified:   syslogd.pl
> 
> So there are two files with changes to commit.
> "git diff --cached -M" outputs only one chink, however:
> diff --git a/lib/UnknownMessage.pm b/lib/UnknownMessage.pm
> index eef8f25..d0246ef 100644
> --- a/lib/UnknownMessage.pm
> +++ b/lib/UnknownMessage.pm
> @@ -114,8 +114,4 @@ sub parse_OK($$$$)
>      return defined($class->new_parsed($lt, $peer_addr, $packet, 1));
>  }
> 
> -BEGIN {
> -    Class::_fake_load(__PACKAGE__);    # Tell Perl module is loaded already
> -}
> -
>  1;
> ---------------
> Interestingly the hunk shown is the one that was in the bad commit; the 
> edited commit is missing.
> 
> The missing hunk should look like this:
> ---
> diff --git a/lib/Message.pm b/lib/Message.pm
> index 2c60960..abd3e8e 100644
> --- a/lib/Message.pm
> +++ b/lib/Message.pm
> @@ -147,8 +147,19 @@ sub parse_OK($$$$)
>      return undef;
>  }
> 
> -BEGIN {
> -    Class::_fake_load(__PACKAGE__);    # Tell Perl module is loaded already
> -}
> 
>  1;
> ---
> 
> Now is that a bug, or is it a "pilot error"?
> 
> Regards,
> Ulrich
> 
> 
>
diff mbox series

Patch

diff --git a/lib/UnknownMessage.pm b/lib/UnknownMessage.pm
index eef8f25..d0246ef 100644
--- a/lib/UnknownMessage.pm
+++ b/lib/UnknownMessage.pm
@@ -114,8 +114,4 @@  sub parse_OK($$$$)
     return defined($class->new_parsed($lt, $peer_addr, $packet, 1));
 }

-BEGIN {
-    Class::_fake_load(__PACKAGE__);    # Tell Perl module is loaded already
-}
-
 1;
---------------
Interestingly the hunk shown is the one that was in the bad commit; the edited commit is missing.

The missing hunk should look like this:
---
diff --git a/lib/Message.pm b/lib/Message.pm
index 2c60960..abd3e8e 100644
--- a/lib/Message.pm
+++ b/lib/Message.pm
@@ -147,8 +147,19 @@  sub parse_OK($$$$)
     return undef;
 }

-BEGIN {
-    Class::_fake_load(__PACKAGE__);    # Tell Perl module is loaded already
-}

 1;
---

Now is that a bug, or is it a "pilot error"?

Regards,
Ulrich