-- HP -- ESIEE --


REBASING TO UPSTREAM

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