--- Rebasing Proton onto new upstream releases --- We maintain a lot of patches on top of upstream releases. When cherry-picking stuff from upstream into Proton, *always* use the `-x` parameter so the original commit ID is retained in the log message. Contrarily, *never* use `-x` when picking things that are not upstreamed. This lets us use the cherry-picked log message as an indicator of which commits can be dropped during a rebase because they were already upstreamed. Here's a command which will generate the list of commits that were applied on top of wine-4.2, which were not backported from upstream Wine: wine$ git log --pretty=oneline --reverse --grep='cherry pick' --invert-grep wine-4.2..proton_4.2 You can then pick that list (*without* `-x`!) onto a new Wine release tag, resolving conflicts and such as you go. Here's a somewhat clumsy script that I think is easier to work with than git's built-in tools: #!/bin/bash # Cherry-picks commits from an input file in --pretty=oneline format. # Lines that begin with '#' are ignored. # Aborts when a cherry-pick fails. # Outputs the same input file on stderr, but with '#' prefixed to lines that were successfully cherry-picked. #Usage: # $ pick_commits to_pick 2> ~/to_pick2 # On pick failure, fix conflicts and use "git cherry-pick --continue", or # otherwise fix up the repo as desired. # Edit ~/to_pick2 to comment-out the commit that you fixed. # Continue using the new file: # $ pick_commits to_pick2 2> ~/to_pick # Repeat, alternating between to_pick and to_pick2. broken=0 while read -r l; do f=$(echo -n "$l" | cut '-d ' -f1 -) if [ $broken == 0 -a ${f:0:1} != '#' ]; then echo "Picking $l" git cherry-pick $f 2>&1 if [ $? -ne 0 ]; then echo $l 1>&2 broken=1 else echo '#'$l 1>&2 fi else echo $l 1>&2 fi done < "$1" Once your Wine rebase is done, update the prefix version in the proton Python script, resetting the minor version back to 1.