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

Unified Diff: create-chromium-git-src

Issue 173599: Add script to create a local Chromium git repository.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 11 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
+ *
« 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