skia2/tools/sync_google3.sh

76 lines
2.3 KiB
Bash
Raw Normal View History

#!/bin/bash
# Copyright 2014 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Syncs //depot/google3/third_party/skia/HEAD to the latest revision of Skia.
# If this script is not run from a Piper client, creates a new CitC client. Also
# updates README.google.
#
# Usage:
# ./tools/sync_google3.sh
prodcertstatus -q || (echo "Please run prodaccess." 1>&2; exit 1)
source gbash.sh || exit 2
set -e
MY_DIR="$(gbash::get_absolute_caller_dir)"
SKIA_REV="$(git ls-remote https://skia.googlesource.com/skia refs/heads/master | cut -f 1)"
gbash::get_google3_dir && GOOGLE3="$(gbash::get_google3_dir)"
if [ -z "${GOOGLE3}" ]; then
CLIENT_NAME="sync_skia_$(date '+%F-%H-%M-%S')"
${MY_DIR}/create_skia_google3_client.sh "${CLIENT_NAME}"
GOOGLE3="/google/src/cloud/${USER}/${CLIENT_NAME}/google3"
fi
cd "${GOOGLE3}/third_party/skia/HEAD"
${MY_DIR}/git_clone_to_google3.sh --skia_rev "${SKIA_REV}"
echo "Synced client ${CLIENT_NAME} to ${SKIA_REV}"
# Grab previous Git revision.
GOOGLE3_REV="$(grep "Version: " README.google | cut -d ' ' -f 2)"
# Update README.google.
sed --in-place "s/^Version: .*/Version: ${SKIA_REV}/" README.google
sed --in-place "s/URL: https:\/\/skia.googlesource.com\/skia\/+archive\/.*\.tar\.gz/URL: https:\/\/skia.googlesource.com\/skia\/+archive\/${SKIA_REV}.tar.gz/" README.google
# Add README.google to the default change.
g4 reopen
# Generate commit description.
CURRENT_DATE=`date '+%d %B %Y'`
COMMIT_RANGE="${GOOGLE3_REV:0:9}..${SKIA_REV:0:9}"
CHANGES="$(git log ${COMMIT_RANGE} --date=short --no-merges --format='%ad %ae %s')"
COMMITS="$(wc -l <<EOF
${CHANGES}
EOF
)"
DESC="$(cat <<EOF
Roll Skia ${COMMIT_RANGE} (${COMMITS} commits)
https://chromium.googlesource.com/skia.git/+log/${COMMIT_RANGE}
$ git log ${COMMIT_RANGE} --date=short --no-merges --format='%ad %ae %s'
${CHANGES}
Change created by sync_google3.sh on ${CURRENT_DATE} by ${USER}
EOF
)"
# Create a new CL.
CHANGE="$(g4 change --desc "${DESC}.")"
CL="$(echo "${CHANGE}" | sed "s/Change \([0-9]\+\) created.*/\1/")"
echo "Created CL ${CL} (http://cl/${CL})"
# Run presubmit (will run TAP tests).
if g4 presubmit -c "${CL}"; then
echo "CL is ready for review and submit at http://cl/${CL}"
else
echo "Presubmit failed for CL ${CL} in client ${CLIENT_NAME}" 1>&2
exit 3
fi