Index: create-chromium-git-src |
=================================================================== |
--- create-chromium-git-src (revision 0) |
+++ create-chromium-git-src (revision 0) |
@@ -0,0 +1,194 @@ |
+#!/bin/bash -e |
+# |
+# Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+# |
+# create-chromium-git-src |
+# |
+# Create and configure a local Chromium git repository. |
+# |
+ |
+GITSERVER="${GITSERVER:-git.chromium.org}" |
+TMP=".create_chromium_git_src.$$" |
+ |
+function cleanup { |
+ rm -rf "${TMP}" |
+} |
+ |
+trap 'cleanup; echo Failure!; tput bel; exit 1' TERM QUIT HUP INT EXIT |
+ |
+function get_email { |
+ # Get user email address. |
+ EMAIL="" |
+ while [ "x${EMAIL}" = "x" ]; do |
+ echo -n "Email address git should configure in your checkout: " |
+ read EMAIL |
+ if [ "x${EMAIL}" = "x${EMAIL%@*}" ]; then |
+ echo "Invalid email address (must contain @)!" |
+ EMAIL="" |
+ fi |
+ done |
+ echo -n "Using ${EMAIL} for email address... " |
+ sleep 1 |
+ echo OK |
+} |
+ |
+# Verify we can write to particular directories. |
+function check_dirs { |
+ if [ -d src ]; then |
+ echo "Found a src directory, do you already have a Chromium checkout?" |
+ exit 1 |
+ fi |
+} |
+ |
+# Test git and git --version. |
+function test_git { |
+ echo -n "Trying git... " |
+ local GITV="$(git --version 2>&1)" || { |
+ echo "git isn't installed, please install it" |
+ exit 1 |
+ } |
+ |
+ GITV="${GITV##* }" # Only examine last word (i.e. version number) |
+ local GITD=( ${GITV//./ } ) # Split version number into decimals |
+ if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then |
+ echo FAIL |
+ echo "git version is ${GITV}, please update to a version later than 1.6" |
+ exit 1 |
+ fi |
+ echo OK |
+} |
+ |
+# Test git svn and git svn --version. |
+function test_git_svn { |
+ echo -n "Trying git-svn... " |
+ rm -rf "${TMP}" |
+ git clone git://github.com/git/hello-world.git "${TMP}" &>/dev/null && |
+ local GITV="$(cd "${TMP}" && git svn --version 2>/dev/null)" || { |
+ echo FAIL |
+ echo "git-svn isn't installed, please install it" |
+ exit 1 |
+ } |
+ |
+ GITV="${GITV#* version }" # git svn --version has extra output to remove. |
+ GITV="${GITV% (svn*}" |
+ local GITD=( ${GITV//./ } ) # Split version number into decimals |
+ if ((GITD[0] < 1 || (GITD[0] == 1 && GITD[1] < 6) )); then |
+ echo FAIL |
+ echo "git version is ${GITV}, please update to a version later than 1.6" |
+ exit 1 |
+ fi |
+ echo OK |
+} |
+ |
+# Verify we can reach our main git URL. |
+function test_git_url { |
+ echo -n "Testing Chromium git URL... " |
+ mkdir -p "${TMP}" |
+ (cd "${TMP}" && |
+ rm -rf .git .gitignore && |
+ git init && |
+ git remote add origin git://"${GITSERVER}"/chromium.git && |
+ git remote show origin) &>/dev/null & |
+ local pid=$! |
+ { sleep 10 && kill "${pid}"; } &>/dev/null & |
+ wait "${pid}" &>/dev/null || { |
+ echo FAIL |
+ echo "Timeout accessing Chromium git URL, is ${GITSERVER} correct?" |
+ exit 1 |
+ } |
+ echo OK |
+} |
+ |
+# Grab a clone of the Chromium git repository. |
+function grab_crgit { |
+ echo "Grabbing Chromium git repository..." |
+ git clone git://"${GITSERVER}"/chromium.git src || { |
+ echo "git clone exited with error" |
+ echo "You should probably remove 'src' before retrying" |
+ exit 1 |
+ } |
+} |
+ |
+# Configure the git repository to know about the upstream SVN server. |
+function git_svn_init { |
+ echo -n "Configuring upstream SVN... " |
+ (cd src && git svn init --prefix=origin/ -T trunk/src \ |
+ svn://svn.chromium.org/chrome) &>/dev/null || { |
+ echo FAIL |
+ echo "'git svn init' exited with error" |
+ exit 1 |
+ } |
+ echo OK |
+} |
+ |
+# Initialize the SVN history in the repository, also sanity checks our upstream |
+# SVN configuration. |
+function git_svn_fetch { |
+ echo "Fetching SVN history..." |
+ (cd src && git svn fetch && git pull) || { |
+ echo "'git svn fetch' exited with error" |
+ exit 1 |
+ } |
+} |
+ |
+# Remaining configuration of the git repository: |
+# - associate with codereview/rietveld |
+# - set the repository's email address |
+# - disable crlf munging |
+# - grab a stock .gclient file |
+function git_config { |
+ echo -n "Associating with Rietveld... " |
+ (cd src && git cl config http://src.chromium.org/svn/) |
+ echo OK |
+ |
+ echo -n "Configuring email address (git config user.email ${EMAIL})... " |
+ (cd src && git config user.email "${EMAIL}") |
+ echo OK |
+ |
+ echo -n "Disabling crlf munging... " |
+ (cd src && git config --global core.autocrlf false) |
+ echo OK |
+ |
+ echo -n "Creating a .gclient file... " |
+ gclient config http://src.chromium.org/svn/trunk/src |
+ echo OK |
+} |
+ |
+get_email |
+check_dirs |
+test_git |
+test_git_svn |
+test_git_url |
+grab_crgit |
+git_svn_init |
+git_svn_fetch |
+git_config |
+ |
+echo |
+echo "A Chromium Git repository was created in 'src'." |
+echo |
+echo " To create a CL..." |
+echo " Update: git pull && gclient sync" |
+echo " Create and use a branch mychange: git checkout -q -b mychange origin" |
+echo " Edit files and commit: git commit -a -v" |
+echo " Upload CL: git cl upload" |
+echo " Try a change: git try origin" |
+echo " Commit a CL: git cl dcommit" |
+echo " Switch to the trunk: git checkout trunk" |
+echo " Delete a branch mychange: git branch -d mychange" |
+echo |
+echo " If while on a branch you need to switch back to the trunk..." |
+echo " Switch to the trunk: git checkout trunk" |
+echo " List all branches: git branch" |
+echo " Switch to branch mychange: git checkout mychange" |
+echo |
+echo " Examining files and changes..." |
+echo " Log with patches: git log -p" |
+echo " Changes to DEPS: git log -p DEPS" |
+echo " View latest commit: git cat-file commit HEAD" |
+echo |
+echo "You should run: gclient sync" |
+echo |
+trap cleanup EXIT |
Property changes on: create-chromium-git-src |
___________________________________________________________________ |
Added: svn:executable |
+ * |