Here's merge attempt #1 from the trivial tree. Though the changes are obviously trivial, I'd like to end up with a functional work-flow for merging such trees, so that the process may eventually be useful for other subsystems as well. Here's my approach so far:
- User PRs into the trivial-next branch. Actually for now most are PRing into the Bitcoin tree and I poach them, but this could change after documenting the changes.
- The trivial tree follows master, and often does upstream merges in order to stay sync'd up. Whenever pulling in a PR that has a tip higher than the current trivial-next tip, I merge from upstream first, then merge the PR. That allows for conflicts against master to be resolved before bringing in the new changes. Also, I ensure that 'git rerere' is enabled first, so that my conflict resolutions are recorded.
- I simultaneously maintain a 'trivial-rebased' branch which is essentially staging for a merge into master. After merging in a PR, I checkout this branch, reset to trivial-next, then rebase onto origin/master. The previously-recorded resolutions are re-used, so there should be no need for manual conflict resolution here if the previous steps were done correctly.
- PR into master. After merge, trivial-rebased can be reset to trivial-next, and the cycle starts over. Since trivial-next always follows master and merges from upstream rather than rebasing, users aren't required to do force-pulls or do anything else out of the ordinary.
Written out, that may sound a bit complicated, but after a few merges it's actually quite brainless.