OLD | NEW |
---|---|
1 #!/bin/bash -e | 1 #!/bin/bash -e |
2 # | 2 # |
3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2009 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 # create-chromium-git-src | 7 # create-chromium-git-src |
8 # | 8 # |
9 # Create and configure a local Chromium git repository. | 9 # Create and configure a local Chromium git repository. |
10 # | 10 # |
11 | 11 |
12 GITSERVER="${GITSERVER:-git.chromium.org}" | 12 GITSERVER="${GITSERVER:-git.chromium.org}" |
13 SVNSERVER="${SVNSERVER:-svn://svn.chromium.org/chrome}" | |
13 TMP=".create_chromium_git_src.$$" | 14 TMP=".create_chromium_git_src.$$" |
14 | 15 |
15 function cleanup { | 16 function cleanup { |
16 rm -rf "${TMP}" | 17 rm -rf "${TMP}" |
17 } | 18 } |
18 | 19 |
19 trap 'cleanup; echo Failure!; tput bel; exit 1' TERM QUIT HUP INT EXIT | 20 trap 'cleanup; echo Failure!; tput bel; exit 1' TERM QUIT HUP INT EXIT |
20 | 21 |
21 function get_email { | 22 function get_email { |
22 # Get user email address. | 23 # Get user email address. |
(...skipping 15 matching lines...) Expand all Loading... | |
38 function check_dirs { | 39 function check_dirs { |
39 if [ -d src ]; then | 40 if [ -d src ]; then |
40 echo "Found a src directory, do you already have a Chromium checkout?" | 41 echo "Found a src directory, do you already have a Chromium checkout?" |
41 exit 1 | 42 exit 1 |
42 fi | 43 fi |
43 } | 44 } |
44 | 45 |
45 # Test git and git --version. | 46 # Test git and git --version. |
46 function test_git { | 47 function test_git { |
47 echo -n "Trying git... " | 48 echo -n "Trying git... " |
48 local GITV="$(git --version 2>&1)" || { | 49 local GITV="$(git --version)" || { |
49 echo "git isn't installed, please install it" | 50 echo "git isn't installed, please install it" |
50 exit 1 | 51 exit 1 |
51 } | 52 } |
52 | 53 |
53 GITV="${GITV##* }" # Only examine last word (i.e. version number) | 54 GITV="${GITV##* }" # Only examine last word (i.e. version number) |
54 local GITD=( ${GITV//./ } ) # Split version number into decimals | 55 local GITD=( ${GITV//./ } ) # Split version number into decimals |
55 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then | 56 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then |
56 echo FAIL | |
57 echo "git version is ${GITV}, please update to a version later than 1.6" | 57 echo "git version is ${GITV}, please update to a version later than 1.6" |
58 exit 1 | 58 exit 1 |
59 fi | 59 fi |
60 echo OK | 60 echo "found git version ${GITV}" |
61 } | 61 } |
62 | 62 |
63 # Test git svn and git svn --version. | 63 # Test git svn and git svn --version. |
64 function test_git_svn { | 64 function test_git_svn { |
65 echo -n "Trying git-svn... " | 65 echo -n "Trying git-svn... " |
66 rm -rf "${TMP}" | 66 rm -rf "${TMP}" |
67 git clone git://github.com/git/hello-world.git "${TMP}" &>/dev/null && | 67 git clone git://github.com/git/hello-world.git "${TMP}" &>/dev/null && |
68 local GITV="$(cd "${TMP}" && git svn --version 2>/dev/null)" || { | 68 local GITV="$(cd "${TMP}" && git svn --version)" || { |
69 echo FAIL | |
70 echo "git-svn isn't installed, please install it" | 69 echo "git-svn isn't installed, please install it" |
71 exit 1 | 70 exit 1 |
72 } | 71 } |
73 | 72 |
74 GITV="${GITV#* version }" # git svn --version has extra output to remove. | 73 GITV="${GITV#* version }" # git svn --version has extra output to remove. |
75 GITV="${GITV% (svn*}" | 74 GITV="${GITV% (svn*}" |
76 local GITD=( ${GITV//./ } ) # Split version number into decimals | 75 local GITD=( ${GITV//./ } ) # Split version number into decimals |
77 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then | 76 if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then |
78 echo FAIL | |
79 echo "git version is ${GITV}, please update to a version later than 1.6" | 77 echo "git version is ${GITV}, please update to a version later than 1.6" |
80 exit 1 | 78 exit 1 |
81 fi | 79 fi |
82 echo OK | 80 echo "found git-svn version ${GITV}" |
81 | |
82 echo "Testing git svn init..." | |
83 (cd "${TMP}" && git svn init --username="${EMAIL}" --prefix=origin/ \ | |
M-A Ruel
2009/10/12 22:09:02
why not svn ls?
chase
2009/10/20 20:05:14
Tried in an earlier version, couldn't get the exac
| |
84 -T trunk/src "${SVNSERVER}") & | |
85 local pid="$!" | |
86 { sleep 10 && kill "${pid}"; } &>/dev/null & | |
87 wait "${pid}" &>/dev/null || { | |
88 echo "Could not initialize repository, is SVN server ${SVNSERVER} correct?" | |
89 echo "The supplied username and password may be incorrect." | |
90 exit 1 | |
91 } | |
83 } | 92 } |
84 | 93 |
85 # Verify we can reach our main git URL. | 94 # Verify we can reach our main git URL. |
86 function test_git_url { | 95 function test_git_url { |
87 echo -n "Testing Chromium git URL... " | 96 echo -n "Testing Chromium git URL... " |
88 mkdir -p "${TMP}" | 97 mkdir -p "${TMP}" |
89 (cd "${TMP}" && | 98 (cd "${TMP}" && |
90 rm -rf .git .gitignore && | 99 rm -rf .git .gitignore && |
91 git init && | 100 git init && |
92 git remote add origin git://"${GITSERVER}"/chromium.git && | 101 git remote add origin git://"${GITSERVER}"/chromium.git && |
93 git remote show origin) &>/dev/null & | 102 git remote show origin) &>/dev/null & |
94 local pid=$! | 103 local pid="$!" |
95 { sleep 10 && kill "${pid}"; } &>/dev/null & | 104 { sleep 10 && kill "${pid}"; } &>/dev/null & |
96 wait "${pid}" &>/dev/null || { | 105 wait "${pid}" &>/dev/null || { |
97 echo FAIL | 106 echo "timeout accessing Chromium git URL, is ${GITSERVER} correct?" |
98 echo "Timeout accessing Chromium git URL, is ${GITSERVER} correct?" | |
99 exit 1 | 107 exit 1 |
100 } | 108 } |
101 echo OK | 109 echo OK |
102 } | 110 } |
103 | 111 |
104 # Grab a clone of the Chromium git repository. | 112 # Grab a clone of the Chromium git repository. |
105 function grab_crgit { | 113 function cr_git_clone { |
106 echo "Grabbing Chromium git repository..." | 114 echo "Grabbing Chromium git repository..." |
107 git clone git://"${GITSERVER}"/chromium.git src || { | 115 git clone git://"${GITSERVER}"/chromium.git src || { |
108 echo "git clone exited with error" | 116 echo "git clone exited with error" |
109 echo "You should probably remove 'src' before retrying" | 117 echo "You should probably remove 'src' before retrying" |
110 exit 1 | 118 exit 1 |
111 } | 119 } |
112 } | 120 } |
113 | 121 |
114 # Configure the git repository to know about the upstream SVN server. | 122 # Configure the git repository to know about the upstream SVN server. |
115 function git_svn_init { | 123 function cr_git_svn_init { |
116 echo -n "Configuring upstream SVN... " | 124 echo "Configuring upstream SVN..." |
117 (cd src && git svn init --prefix=origin/ -T trunk/src \ | 125 (cd src && git svn init --username="${EMAIL}" --prefix=origin/ -T trunk/src \ |
118 svn://svn.chromium.org/chrome) &>/dev/null || { | 126 "${SVNSERVER}") || { |
119 echo FAIL | |
120 echo "'git svn init' exited with error" | 127 echo "'git svn init' exited with error" |
121 exit 1 | 128 exit 1 |
122 } | 129 } |
123 echo OK | |
124 } | 130 } |
125 | 131 |
126 # Initialize the SVN history in the repository, also sanity checks our upstream | 132 # Initialize the SVN history in the repository, also sanity checks our upstream |
127 # SVN configuration. | 133 # SVN configuration. |
128 function git_svn_fetch { | 134 function cr_git_svn_fetch { |
129 echo "Fetching SVN history..." | 135 echo "Fetching SVN history..." |
130 (cd src && git svn fetch && git pull) || { | 136 (cd src && git svn fetch && git pull) || { |
131 echo "'git svn fetch' exited with error" | 137 echo "'git svn fetch' exited with error" |
132 exit 1 | 138 exit 1 |
133 } | 139 } |
134 } | 140 } |
135 | 141 |
136 # Remaining configuration of the git repository: | 142 # Remaining configuration of the git repository: |
137 # - associate with codereview/rietveld | 143 # - associate with codereview/rietveld |
138 # - set the repository's email address | 144 # - set the repository's email address |
139 # - disable crlf munging | 145 # - disable crlf munging |
140 # - grab a stock .gclient file | 146 # - grab a stock .gclient file |
141 function git_config { | 147 function git_config { |
142 echo -n "Associating with Rietveld... " | 148 echo -n "Associating with Rietveld... " |
143 (cd src && git cl config http://src.chromium.org/svn/) | 149 (cd src && git cl config http://src.chromium.org/svn/) |
144 echo OK | 150 echo OK |
145 | 151 |
146 echo -n "Configuring email address (git config user.email ${EMAIL})... " | 152 echo -n "Configuring email address... " |
147 (cd src && git config user.email "${EMAIL}") | 153 (cd src && git config user.email "${EMAIL}") |
148 echo OK | 154 echo OK |
149 | 155 |
150 echo -n "Disabling crlf munging... " | 156 echo -n "Disabling crlf munging... " |
151 (cd src && git config --global core.autocrlf false) | 157 (cd src && git config --global core.autocrlf false) |
152 echo OK | 158 echo OK |
153 | 159 |
154 echo -n "Creating a .gclient file... " | 160 echo -n "Creating a .gclient file... " |
155 gclient config http://src.chromium.org/svn/trunk/src | 161 gclient config http://src.chromium.org/svn/trunk/src |
156 echo OK | 162 echo OK |
157 } | 163 } |
158 | 164 |
159 get_email | 165 get_email |
160 check_dirs | 166 check_dirs |
161 test_git | 167 test_git |
162 test_git_svn | 168 test_git_svn |
163 test_git_url | 169 test_git_url |
164 grab_crgit | 170 cr_git_clone |
165 git_svn_init | 171 cr_git_svn_init |
166 git_svn_fetch | 172 cr_git_svn_fetch |
167 git_config | 173 git_config |
168 | 174 |
169 echo | 175 echo |
170 echo "A Chromium Git repository was created in 'src'." | 176 echo "A Chromium Git repository was created in 'src'." |
171 echo | 177 echo |
172 echo " To create a CL..." | 178 echo " To create a CL..." |
173 echo " Update: git pull && gclient sync" | 179 echo " Update: git pull && gclient sync" |
174 echo " Create and use a branch mychange: git checkout -q -b mychange origin" | 180 echo " Create and use a branch mychange: git checkout -q -b mychange origin" |
175 echo " Edit files and commit: git commit -a -v" | 181 echo " Edit files and commit: git commit -a -v" |
176 echo " Upload CL: git cl upload" | 182 echo " Upload CL: git cl upload" |
177 echo " Try a change: git try origin" | 183 echo " Try a change: git try origin" |
178 echo " Commit a CL: git cl dcommit" | 184 echo " Commit a CL: git cl dcommit" |
179 echo " Switch to the trunk: git checkout trunk" | 185 echo " Switch to the trunk: git checkout trunk" |
180 echo " Delete a branch mychange: git branch -d mychange" | 186 echo " Delete a branch mychange: git branch -d mychange" |
181 echo | 187 echo |
182 echo " If while on a branch you need to switch back to the trunk..." | 188 echo " If while on a branch you need to switch back to the trunk..." |
183 echo " Switch to the trunk: git checkout trunk" | 189 echo " Switch to the trunk: git checkout trunk" |
184 echo " List all branches: git branch" | 190 echo " List all branches: git branch" |
185 echo " Switch to branch mychange: git checkout mychange" | 191 echo " Switch to branch mychange: git checkout mychange" |
186 echo | 192 echo |
187 echo " Examining files and changes..." | 193 echo " Examining files and changes..." |
188 echo " Log with patches: git log -p" | 194 echo " Log with patches: git log -p" |
189 echo " Changes to DEPS: git log -p DEPS" | 195 echo " Changes to DEPS: git log -p DEPS" |
190 echo " View latest commit: git cat-file commit HEAD" | 196 echo " View latest commit: git cat-file commit HEAD" |
191 echo | 197 echo |
192 echo "You should run: gclient sync" | 198 echo "You should run: gclient sync" |
193 echo | 199 echo |
194 trap cleanup EXIT | 200 trap cleanup EXIT |
OLD | NEW |