[Bug 50720] New: Cannot apply patch series that modifies and then renames a file

WineHQ Bugzilla wine-bugs at winehq.org
Wed Feb 24 05:15:21 CST 2021


https://bugs.winehq.org/show_bug.cgi?id=50720

            Bug ID: 50720
           Summary: Cannot apply patch series that modifies and then
                    renames a file
           Product: Wine-Testbot
           Version: unspecified
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: unknown
          Assignee: wine-bugs at winehq.org
          Reporter: fgouget at codeweavers.com
      Distribution: ---

If part 1 of a patch series modifies a file and then part 2 renames that file,
git apply misapplies or fails to apply the combined (concatenated) patch used
by the TestBot.

See for instance:
https://www.winehq.org/pipermail/wine-devel/2021-February/181490.html

When a Git commit renames and modifies a file, the resulting Git diff does both
in one operation:

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/quartz_parser.c
similarity index 97%
rename from dlls/winegstreamer/gstdemux.c
rename to dlls/winegstreamer/quartz_parser.c
index 84e6bcd61e4..e9e7c3a0f9f 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/quartz_parser.c
...

But the combined patches that the TestBot produces for patch series results in
multiple "diff --git" entries, one to modify the old file, and then one to
rename it. That results in "git apply" either mishandling the patch (apparently
it performs a global analysis and renames the file before patching the old
file, maybe to handle patches with A->B + B->A renames), or failing to apply it
altogether.

Potential fixes:
* Use "patch -p1". It handles these combined patches as expected. It may
however be somewhat more permissive than "git apply" in other scenarios which
may not be desirable.

* Split the combined patch into its individual components before "git applying"
them one by one.

* Store the patches in mbox format so that the combined patch is in mbox format
too, and use "git am".


This can be tested with the following wtbsuite tests:
[2/2] WTBS S10.2 - ...before renaming it in the next part (amstream:amstream).
[7/7] WTBS S5.7 - Check for rename+addition+removal conflicts (msi:suminfo).

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list