|
It's best to use palinux to do the merge in order to keep network traffic
to a minimum, but it's not strictly necessary.
# Get the existing head of our tree
$ cd merge-2.6
$ git-pull
$ git-fetch linus
# Branch the current state
$ GIT_DIR=/var/git/linux-2.6.git git-branch devel-2006-10-31 master
# Kill off the current master and create a new one
$ git-checkout linus
$ git-branch -D master
$ git-checkout -b master
# Cherry-pick everything that wasn't in Linus' tree into our tree
# Handle conflicts as they come up.
$ for i in `git-rev-list linus..origin |tac`; do if ! git-cherry-pick -r $i; then sh; fi; done
# If the conflict results in taking upstream's version, use
$ git-reset --hard
$ exit
# If the conflict results in some changes from our tree, use
$ git-update-index ...
$ GIT_AUTHOR_NAME=... GIT_AUTHOR_EMAIL=... GIT_AUTHOR_DATE=... git-commit -F .msg
$ exit
# Remember you can check what's changed in the *conflicted* files with
# git-diff but to check what's changed in this *commit*, use git-diff master
# because some files will already have had git-update-index called
# Some cherry-picks will fail "Cannot run cherry-pick a multi-parent commit."
# just exit the shell and carry on.
# Once it's done, check we didn't drop anything.
$ git-checkout -b tmp origin
$ git-pull . linus
# fix up any conflicts ...
$ git-diff master
# Deep breath. Let's publish it.
$ git-push origin master:refs/heads/new-master
$ mv /var/git/linux-2.6.git/refs/heads/new-master /var/git/linux-2.6.git/refs/heads/master
|