Werner Posted May 24, 2020 Posted May 24, 2020 Ever since patchfolders were created for different branches and different board families it has become more and more a nightmare to maintain these folders and keep them clean. Instead of taking the approach to clear one or more of these folders by myself, last but not least due to lack of necessary skills, I was thinking maybe I can provide some tools that make such tasks a little easier for somebody else. Last but not least was (and still is) this a perfect opportunity to pratice with my quite new Python skills. https://github.com/EvilOlaf/refactorpatches What this script basically does is break down all patches in a certain folder and check which files are targeted by each individual diff (if you choose to split them up) and sort the output by the target file. This way it should be an easy thing to merge patches that affect the same file and therefore it is no longer necessary to take care about the order to apply them. Requirements from apt: patchutils, python3 Requirements from Pypi: none but just make sure the prettytable.py is in the same folder as main refactor.py. I have tested this with random patch folders for kernel patches and for what it is expected to do at the current state it seems to just work as it should. There is still a ton of room for improvements. Let me know what do you think or if it is useful at all. Even if it is not I had fun coding and using Python 1
Myy Posted May 24, 2020 Posted May 24, 2020 Interesting approach. I'd just like to mention that factorizing is required, if the patches apply to the same file AND the same blocks (functions, DTS, ...). If you create THAT big patch that add 50 entries to a single DTS file, and the mainline DTS file gets updated with the addition of, like, 3 entries out of the 50, then you won't be able to apply your big patch AND you'll need to rework it. Since you won't be able to apply it again, you can either pray that 3-way merging works, or you'll have to do a copy-paste of every missing entry from the patch, back to the DTS file AND regenerate a patch from there. Now, if you got 5 patches affecting "that same function" or "that same DTS block", then yes, merging is required. Anyway, this tool should greatly help in reducing the number of patches. Just don't do a blind factorization, it will back-fire very quickly. 1
Werner Posted May 25, 2020 Author Posted May 25, 2020 Thanks for your comment. In first place I was thinking about making this tool to merge patches automatically but now I think it is even better to have the patches broken down into files because when there are changes upstream it is easier to detect which one fails and you can faster deal with it. And due to the numbering of the files you know anyways which split-patch belongs to another and even keeps the sequence of merging.
Werner Posted May 26, 2020 Author Posted May 26, 2020 The output for target files which are affected by multiple patches is now better. 1
Recommended Posts