#!/bin/bash usage() { cat <<-EOF Usage: repo-cros [options] Options: depot_tools clone depot_tools tree int switch to internal tree ext switch to external tree -b switch branches (use "master" to get to ToT) -r patch to reference repo (e.g. ~/chromiumos/) -g -m -e Operates on the repo in ${PWD} EOF exit ${1:-1} } v() { printf '%s\n%s\n' "${PWD}" "$*" "$@" } email="vapier@chromium.org" REF= BRANCH= MANIFEST= MANIFEST_NAME= RGROUPS=() REPO_URL= while [[ $# -gt 0 ]] ; do case $1 in depot_tools|dt) exec git clone https://git.chromium.org/chromium/tools/depot_tools.git ;; int) MANIFEST='https://chrome-internal.googlesource.com/chromeos/manifest-internal.git' REPO_URL='https://chromium.googlesource.com/external/repo.git' ;; ext) MANIFEST='https://chromium.googlesource.com/chromiumos/manifest.git' REPO_URL='https://chromium.googlesource.com/external/repo.git' ;; -b) BRANCH=$2 shift ;; -r) REF=$(realpath "${2:-$(echo ~/chromiumos)}") shift ;; -g) RGROUPS+=( "$2" ) shift ;; -m) MANIFEST_NAME="${2%.xml}.xml" shift ;; -e) email=$2 shift ;; *) usage ;; esac shift done if [[ ${#BRANCH} -eq 3 ]] && [[ -d ${REF} ]] ; then BRANCH=$(git --git-dir="${REF}/.repo/manifests.git" branch -a | grep -o "release-${BRANCH}.*") fi v repo init \ ${MANIFEST:+-u "${MANIFEST}"} \ ${REPO_URL:+--repo-url="${REPO_URL}"} \ ${REF:+--reference "${REF}"} \ ${MANIFEST_NAME:+-m "${MANIFEST_NAME}"} \ ${RGROUPS:+-g "${RGROUPS[*]}"} \ ${BRANCH:+-b "${BRANCH}"} rdir=$(realpath "`pwd`") while [[ ! -d ${rdir}/.repo ]] ; do rdir=${rdir%/*} [[ ${rdir:-/} == "/" ]] && break done rdir+="/.repo" if [[ -d ${rdir} ]] ; then gcfg() { git --git-dir="$1" config user.email "${@:2}" ; } if [[ $(gcfg "${rdir}/manifests.git") != "${email}" ]] ; then echo "${rdir}: setting e-mail to ${email}" find "${rdir}" -type d -name '*.git' | \ while read d ; do gcfg "${d}" ${email} done fi fi exit 0