Skip to content

Fixes up a commit adjacent to the line being changed #15

@nickolay

Description

@nickolay

After fixing #6, I noticed another issue with the testcase from that issue.

In the testcase the commit to absorb is removing all instances of #[cfg(feature = "rsa_keygen")] and there is an intermediate commit adding a function with that attribute:

83      }
84   
85      #[cfg(feature = "rsa_keygen")]
86   +  pub fn limbs_even_add_one(r: &mut [Limb]) {
     +      // ...
91   +  }
92   +  
93   +  #[cfg(feature = "rsa_keygen")]
94      pub fn limbs_count_low_zero_bits(v: &[Limb]) -> u16 {

git-absorb decides to fix up this intermediate commit with both the hunk removing the cfg attribute at line 85 and at line 93, while arguably line 85 removal doesn't belong to the intermediate commit, as line 85 wasn't added by the commit.

It's clear why git-absorb does it, and if it produced a fixup for an older commit introducing line 85, that fixup would conflict with the intermediate commit. Still, git-absorb could:

  • Keep the removal of line 85 in the index
  • Warn about this
  • It's also possible rewrite the history to remove line 85 from an older commit, if we don't limit ourselves to producing fixup commits on top of existing history, but that's probably out of scope for git-absorb?

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions