Attempt to work around patches missing "No newline at end of file" markers.

Review Request #14175 — Created Sept. 19, 2024 and updated

Information

Review Board
release-7.x

Reviewers

Some old (but still widely in use) versions of GNU diff have a bug where
they may at times fail to generate a \ No newline at end of file
marker for files that lack a trailing newline. Modern GNU Patch does not
work around this case, and fails with an error.

We now attempt to work around this issue. If a patch fails to apply, we
begin to investigate the diff. If it lacks a trailing newline, and we
don't see this marker anywhere in the diff, we will attempt to add a
newline and patch again.

This is not always guaranteed to work. It's a best-effort attempt at
working around a problem with how the diff is generated. We never hit it
unless we've already failed to patch, though.

Unit tests pass.

Summary ID
Attmpt to work around patches missing "No newline at end of file" markers.
Some old (but still widely in use) versions of GNU diff have a bug where they may at times fail to generate a ``\ No newline at end of file` marker for files that lack a trailing newline. Modern GNU Patch does not work around this case, and fails with an error. We now attempt to work around this issue. If a patch fails to apply, we begin to investigate the diff. If it lacks a trailing newline, and we don't see this marker anywhere in the diff, we will attempt to add a newline and patch again. This is not always guaranteed to work. It's a best-effort attempt at working around a problem with how the diff is generated. We never hit it unless we've already failed to patch, though.
41e6b3e0b624318580e1e465b1e649b3e27d74f3
Description From Last Updated

Typo in summary: Attmpt -> Attempt

daviddavid

Typo in description around "No newline at end of file"

daviddavid
maubin
  1. Ship It!
  2. 
      
david
  1. 
      
  2. Show all issues

    Typo in summary: Attmpt -> Attempt

  3. Show all issues

    Typo in description around "No newline at end of file"

  4. 
      
chipx86
Review request changed
Summary:
Attmpt to work around patches missing "No newline at end of file" markers.
Attempt to work around patches missing "No newline at end of file" markers.
Description:
   

Some old (but still widely in use) versions of GNU diff have a bug where

~   they may at times fail to generate a `\ No newline at end of file
  ~ they may at times fail to generate a \ No newline at end of file
    marker for files that lack a trailing newline. Modern GNU Patch does not
    work around this case, and fails with an error.

   
   

We now attempt to work around this issue. If a patch fails to apply, we

    begin to investigate the diff. If it lacks a trailing newline, and we
    don't see this marker anywhere in the diff, we will attempt to add a
    newline and patch again.

   
   

This is not always guaranteed to work. It's a best-effort attempt at

    working around a problem with how the diff is generated. We never hit it
    unless we've already failed to patch, though.

david
  1. Ship It!
  2.