| Index: git-lkgr
|
| ===================================================================
|
| --- git-lkgr (revision 161304)
|
| +++ git-lkgr (working copy)
|
| @@ -4,6 +4,24 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +force_branch=no
|
| +quiet=no
|
| +
|
| +while [ $# -gt 0 ]; do
|
| + case "$1" in
|
| + --force-branch)
|
| + force_branch=yes
|
| + ;;
|
| + -q|--quiet)
|
| + quiet=yes
|
| + ;;
|
| + *)
|
| + echo "Unknown option: $1"
|
| + ;;
|
| + esac
|
| + shift
|
| +done
|
| +
|
| svn_lkgr=`curl -s http://chromium-status.appspot.com/lkgr`
|
| if [ $? != 0 -o -z "$svn_lkgr" ]; then
|
| echo 'Could not get svn lkgr from chromium-status.appspot.com/lkgr'
|
| @@ -52,13 +70,82 @@
|
| exit 1
|
| fi
|
|
|
| +# Pick a name for the new branch. Use `git rev-parse` to make sure the branch
|
| +# doesn't already exist; if it does, iterate an integer suffix to uniquify it.
|
| +lkgr_branch="git_lkgr_r${svn_lkgr}"
|
| +digit=1
|
| +git rev-parse --verify -q "${lkgr_branch}" >/dev/null
|
| +while [ $? -eq 0 ]; do
|
| + lkgr_branch="git_lkgr_r${svn_lkgr}_${digit}"
|
| + digit=`expr $digit + 1`
|
| + git rev-parse --verify -q "${lkgr_branch}" >/dev/null
|
| +done
|
| +
|
| if [ "${closest_svn_commit}" = "${git_lkgr}" ]; then
|
| echo "${closest_commit}"
|
| + if [ "$force_branch" = "yes" ]; then
|
| + git checkout -b "${lkgr_branch}" "${closest_commit}"
|
| + fi
|
| exit 0
|
| -else
|
| - cat <<EOF 1>&2
|
| +elif [ "${quiet}" = "yes" ]; then
|
| + exit 1
|
| +elif [ "${force_branch}" = "no" ]; then
|
| + cat <<EOF
|
| There is no master commit which corresponds exactly to lkgr.
|
| The closest commit is ${closest_commit}.
|
| EOF
|
| + read -n 1 -p 'Would you like to create a new branch based on lkgr? (y/N) '
|
| + echo
|
| + if [ "x$REPLY" != "xy" -a "x$REPLY" != "xY" ]; then
|
| + exit 0
|
| + fi
|
| +fi
|
| +
|
| +current_head=`git branch | grep '^\*' | cut -c3-`
|
| +if [ "${current_head}" = "(no branch)" ]; then
|
| + current_head=`git rev-parse HEAD`
|
| +fi
|
| +
|
| +git checkout --detach "${git_lkgr}" &&
|
| +python tools/deps2git/deps2git.py -d DEPS -o .DEPS.git -w .. &&
|
| +git add .DEPS.git &&
|
| +python tools/deps2git/deps2submodules.py .DEPS.git &&
|
| +git commit -m "SVN changes up to revision $svn_lkgr" &&
|
| +git checkout -b "${lkgr_branch}" HEAD
|
| +
|
| +if [ $? != 0 ]; then
|
| + cat <<EOF
|
| +
|
| +--------------------------------------------------------------------------------
|
| +Something went wrong! Restoring your previous state by checking out
|
| +$current_head
|
| +
|
| +Please file a bug report at http://new.crbug.com.
|
| +--------------------------------------------------------------------------------
|
| +
|
| +EOF
|
| + git checkout --force $current_head
|
| exit 1
|
| fi
|
| +
|
| +cat <<EOF
|
| +
|
| +--------------------------------------------------------------------------------
|
| +The new branch "$lkgr_branch" was branched from this commit:
|
| +
|
| +$git_lkgr
|
| +
|
| +... which maps to the svn lkgr commit r${svn_lkgr}. The new branch
|
| +has one additional commit, to bring .DEPS.git, .gitmodules, and the
|
| +invisible git submodule files up to date with DEPS.
|
| +
|
| +To create a working branch, do this:
|
| +
|
| +\$ git branch --track my_new_branch $lkgr_branch
|
| +
|
| +'git-cl upload' will do the right thing, i.e., it will cherry-pick all
|
| +your changes from my_new_branch, but *not* the .DEPS.git+.gitmodules+submodules
|
| +commit on $lkgr_branch.
|
| +--------------------------------------------------------------------------------
|
| +
|
| +EOF
|
|
|