Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: git-lkgr

Issue 11959013: Add -r <svn revision> option (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 force_branch=no 7 force_branch=no
8 quiet=no 8 quiet=no
9 svn_lkgr=
9 10
10 while [ $# -gt 0 ]; do 11 while [ $# -gt 0 ]; do
11 case "$1" in 12 case "$1" in
12 --force-branch) 13 --force-branch)
13 force_branch=yes 14 force_branch=yes
14 ;; 15 ;;
15 -q|--quiet) 16 -q|--quiet)
16 quiet=yes 17 quiet=yes
17 ;; 18 ;;
19 -r|--revision)
20 svn_lkgr="$2"
21 shift
22 ;;
18 *) 23 *)
19 echo "Unknown option: $1" 24 echo "Unknown option: $1"
20 ;; 25 ;;
21 esac 26 esac
22 shift 27 shift
23 done 28 done
24 29
25 svn_lkgr=`curl -s http://chromium-status.appspot.com/lkgr` 30 if [ -z "$svn_lkgr" ]; then
26 if [ $? != 0 -o -z "$svn_lkgr" ]; then 31 svn_lkgr=`curl -s http://chromium-status.appspot.com/lkgr`
27 echo 'Could not get svn lkgr from chromium-status.appspot.com/lkgr' 32 if [ $? != 0 -o -z "$svn_lkgr" ]; then
28 exit 1 33 echo 'Could not get svn lkgr from chromium-status.appspot.com/lkgr'
34 exit 1
35 fi
36 fi
37
38 if [ "${svn_lkgr:0:1}" = "r" ]; then
39 svn_lkgr="${svn_lkgr:1}"
29 fi 40 fi
30 41
31 # Run a trivial git-svn command to force it to update the revision cache 42 # Run a trivial git-svn command to force it to update the revision cache
32 # (which causes spew that might otherwise confuse the next command). 43 # (which causes spew that might otherwise confuse the next command).
33 git svn info > /dev/null 44 git svn info > /dev/null
34 if [ $? != 0 ]; then 45 if [ $? != 0 ]; then
35 cat <<EOF 1>&2 46 cat <<EOF 1>&2
36 Could not run a trivial git-svn command. You probably need to set up your 47 Could not run a trivial git-svn command. You probably need to set up your
37 working directory for git-svn, by following these instructions: 48 working directory for git-svn, by following these instructions:
38 49
39 http://code.google.com/p/chromium/wiki/UsingNewGit#Initial_checkout 50 http://code.google.com/p/chromium/wiki/UsingNewGit#Initial_checkout
40 EOF 51 EOF
41 exit 1 52 exit 1
42 fi 53 fi
43 54
44 git_lkgr=`git svn find-rev r${svn_lkgr}` 55 git_lkgr=`git svn find-rev r${svn_lkgr}`
45 if [ $? != 0 -o -z "$git_lkgr" ]; then 56 if [ $? != 0 -o -z "$git_lkgr" ]; then
46 cat <<EOF 1>&2 57 cat <<EOF 1>&2
47 Could not map svn revision ${svn_lkgr} to a git commit. 58 Could not map svn revision ${svn_lkgr} to a git commit.
48 You may need to `git fetch` and try again. 59 You may need to `git fetch` and try again.
49 EOF 60 EOF
50 exit 1 61 exit 1
51 fi 62 fi
52 63
53 set -o pipefail 64 set -o pipefail
54 closest_commit=`git rev-list --ancestry-path \ 65 closest_commit=`git rev-list --ancestry-path \
55 --grep='SVN changes up to revision [0-9]*' \ 66 --grep='SVN changes up to revision [0-9]*' \
56 ${git_lkgr}..refs/remotes/origin/master | tail -1` 67 ${git_lkgr}..refs/remotes/origin/master | tail -1`
57 if [ $? != 0 -o -z "$closest_commit" ]; then 68 if [ $? != 0 -o -z "$closest_commit" ]; then
58 cat <<EOF 1>&2 69 closest_commit=
59 Could not find a blessed git commit (with accurate .DEPS.git and submodules) 70 closest_svn_commit=
60 after svn lkgr revision $svn_lkgr. 71 else
72 closest_svn_commit=`git rev-list -n 1 ${closest_commit}^1`
73 if [ $? != 0 -o -z "$closest_svn_commit" ]; then
74 cat <<EOF 1>&2
75 I am thoroughly confused. Please file a bug report at http://new.crbug.com.
61 EOF 76 EOF
62 exit 1 77 exit 1
63 fi 78 fi
64
65 closest_svn_commit=`git rev-list -n 1 ${closest_commit}^1`
66 if [ $? != 0 -o -z "$closest_svn_commit" ]; then
67 cat <<EOF 1>&2
68 I am thoroughly confused. Please file a bug report at http://new.crbug.com.
69 EOF
70 exit 1
71 fi 79 fi
72 80
73 # Pick a name for the new branch. Use `git rev-parse` to make sure the branch 81 # Pick a name for the new branch. Use `git rev-parse` to make sure the branch
74 # doesn't already exist; if it does, iterate an integer suffix to uniquify it. 82 # doesn't already exist; if it does, iterate an integer suffix to uniquify it.
75 lkgr_branch="git_lkgr_r${svn_lkgr}" 83 lkgr_branch="git_lkgr_r${svn_lkgr}"
76 digit=1 84 digit=1
77 git rev-parse --verify -q "${lkgr_branch}" >/dev/null 85 git rev-parse --verify -q "${lkgr_branch}" >/dev/null
78 while [ $? -eq 0 ]; do 86 while [ $? -eq 0 ]; do
79 lkgr_branch="git_lkgr_r${svn_lkgr}_${digit}" 87 lkgr_branch="git_lkgr_r${svn_lkgr}_${digit}"
80 digit=`expr $digit + 1` 88 digit=`expr $digit + 1`
81 git rev-parse --verify -q "${lkgr_branch}" >/dev/null 89 git rev-parse --verify -q "${lkgr_branch}" >/dev/null
82 done 90 done
83 91
84 if [ "${closest_svn_commit}" = "${git_lkgr}" ]; then 92 if [ "${closest_svn_commit}" = "${git_lkgr}" ]; then
85 echo "${closest_commit}" 93 echo "${closest_commit}"
86 if [ "$force_branch" = "yes" ]; then 94 if [ "$force_branch" = "yes" ]; then
87 git checkout -b "${lkgr_branch}" "${closest_commit}" 95 git checkout -b "${lkgr_branch}" "${closest_commit}"
88 fi 96 fi
89 exit 0 97 exit 0
90 elif [ "${quiet}" = "yes" ]; then 98 elif [ "${quiet}" = "yes" ]; then
91 exit 1 99 exit 1
92 elif [ "${force_branch}" = "no" ]; then 100 elif [ "${force_branch}" = "no" ]; then
93 cat <<EOF 101 echo "There is no master commit which corresponds exactly to svn revision ${sv n_lkgr}."
94 There is no master commit which corresponds exactly to lkgr. 102 if [ -n "$closest_commit" ]; then
95 The closest commit is ${closest_commit}. 103 echo "The closest commit is ${closest_commit}."
96 EOF 104 fi
97 read -n 1 -p 'Would you like to create a new branch based on lkgr? (y/N) ' 105 read -n 1 -p "Would you like to create a new branch based on r${svn_lkgr}? (y/ N) "
98 echo 106 echo
99 if [ "x$REPLY" != "xy" -a "x$REPLY" != "xY" ]; then 107 if [ "x$REPLY" != "xy" -a "x$REPLY" != "xY" ]; then
100 exit 0 108 exit 0
101 fi 109 fi
102 fi 110 fi
103 111
104 current_head=`git branch | grep '^\*' | cut -c3-` 112 current_head=`git branch | grep '^\*' | cut -c3-`
105 if [ "${current_head}" = "(no branch)" ]; then 113 if [ "${current_head}" = "(no branch)" ]; then
106 current_head=`git rev-parse HEAD` 114 current_head=`git rev-parse HEAD`
107 fi 115 fi
(...skipping 20 matching lines...) Expand all
128 exit 1 136 exit 1
129 fi 137 fi
130 138
131 cat <<EOF 139 cat <<EOF
132 140
133 -------------------------------------------------------------------------------- 141 --------------------------------------------------------------------------------
134 The new branch "$lkgr_branch" was branched from this commit: 142 The new branch "$lkgr_branch" was branched from this commit:
135 143
136 $git_lkgr 144 $git_lkgr
137 145
138 ... which maps to the svn lkgr commit r${svn_lkgr}. The new branch 146 ... which maps to the svn commit r${svn_lkgr}. The new branch
139 has one additional commit, to bring .DEPS.git, .gitmodules, and the 147 has one additional commit, to bring .DEPS.git, .gitmodules, and the
140 invisible git submodule files up to date with DEPS. 148 invisible git submodule files up to date with DEPS.
141 149
142 To create a working branch, do this: 150 To create a working branch, do this:
143 151
144 \$ git branch --track my_new_branch $lkgr_branch 152 \$ git branch --track my_new_branch $lkgr_branch
145 153
146 'git-cl upload' will do the right thing, i.e., it will cherry-pick all 154 'git-cl upload' will do the right thing, i.e., it will cherry-pick all
147 your changes from my_new_branch, but *not* the .DEPS.git+.gitmodules+submodules 155 your changes from my_new_branch, but *not* the .DEPS.git+.gitmodules+submodules
148 commit on $lkgr_branch. 156 commit on $lkgr_branch.
149 -------------------------------------------------------------------------------- 157 --------------------------------------------------------------------------------
150 158
151 EOF 159 EOF
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698