Greg: When you work on accepting and merging patches, do you use a single tree for all the changes or do you have separate trees for usb, pci, i2c, and so on? If you use a single tree then there's no real choice but to export all the patches together -- cherry-picking the subsets will inevitably lead to inconsistencies. Personally I wouldn't mind having to download patches for the multiple subsystems. It's worth it to be sure of getting a consistent patchset.
On the other hand, if you really do keep the different areas separate while working on them (which would force Andrew Morton to do the necessary reconciliation, right?) then the patches you export also need to be kept totally separate. Having a single "series" file might work but it wouldn't be a good idea. I would like to see incremental patches exported in addition to the cumulative patch file. Here's how it could be made to work. For the sake of argument I'll assume that all the usb, pci, i2c, etc. patches come from the same tree. (If not, this scheme could apply to each of the separate trees.) In the top-level directory there should be a file named "base" containing a single line with two fields, a release name and a patchset increment number, like this: 2.6.12-rc2 5 The scripts (on both your end and my end) can read this at startup, and the increment number can be rewritten by your daily update script. In patches/series, your script should maintain subdivisions indicating where each increment ends. These are in the form of comment lines, something like: #=== 5 which would indicate where the patches for increment 5 end and the patches for increment 6 begin. The update script can automatically append the appropriate comment to this file in preparation for the next set of patches. Finally, the script could produce incremental patches as well as the cumulative patch. These can be stored in the top-level directory, with names like gregkh-2.6.12-rc2-4-5.patch gregkh-2.6.12-rc2-5.patch for the incremental and cumulative patches, respectively. (You might even want to bzip2 them.) In a typical run of the update script, here's what would happen. The script starts by reading the current release name and increment number from ./base. Let's say the current increment is 5. Then the script unpacks the base 2.6.12-r2 tree, makes a hard-linked copy, and applies the -5 cumulative patch. It then makes a second hard-linked copy of that, and applies all the patches in the patches/series file following the "#=== 5" line. Next the script calculates the diff between the first and third trees, storing it as the cumulative -6 patch, and it calculates the diff between the second and third trees, storing it as the incremental -5-6 patch. It rewrites ./base, updating the increment number to 6, appends the "#=== 6" delimiter line to patches/series, and erases the -5 cumulative patch file. Finally the three temporary trees are removed. Something like this would provide maximum flexibility, convenience, and opportunities for automation on my side. My scripts could easily keep track of what was new and apply only the necessary patches. What do you think? Alan Stern ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel