#!/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. # Crude script to clone the git skia repo into the current directory, which # must be a CitC client. # # Usage: # ./tools/git_clone_to_google3.sh prodcertstatus -q || (echo "Please run prodaccess." 1>&2; exit 1) source gbash.sh || exit 2 DEFINE_string skia_rev "" "Git hash of Skia revision to clone, default LKGR." gbash::init_google "$@" set -e # Checkout LKGR of Skia in a temp location. TMP=$(gbash::make_temp_dir) pushd "${TMP}" git clone https://skia.googlesource.com/skia cd skia git fetch if [ -z "${FLAGS_skia_rev}" ]; then # Retrieve last known good revision. MY_DIR="$(gbash::get_absolute_caller_dir)" FLAGS_skia_rev="$(${MY_DIR}/get_skia_lkgr.sh)" fi git checkout --detach "${FLAGS_skia_rev}" # Rsync to google3 location. popd # Use multichange client in case there are too many files for nomultichange. http://b/7292343 g4 client --set_option multichange # Use allwrite to simplify opening the correct files after rsync. g4 client --set_option allwrite # Filter directories added to CitC. rsync -avzJ \ --delete \ --delete-excluded \ --include=/bench \ --include=/dm \ --include=/gm \ --include=/include \ --include=/resources \ --exclude=/src/animator \ --include=/src \ --include=/tests \ --include=/third_party \ --include=/tools \ --include=/.git \ '--exclude=/*/' \ --include=/third_party/etc1 \ --include=/third_party/ktx \ --include=/third_party/libwebp \ '--exclude=/third_party/*/' \ "${TMP}/skia/" \ "./" # Open added/changed files for add/edit. g4 reopen # Revert files that are equivalent to the checked in version. g4 revert -a # Tell CitC to ignore .git and .gitignore. find . \ \( -name .git \ -o -name .gitignore \ \) \ -execdir g4 revert -k \{\} \; # Tell Git to ignore README.google and BUILD. echo README.google >> .git/info/exclude echo BUILD >> .git/info/exclude g4 revert README.google g4 revert BUILD # Use google3 version of OWNERS. find . \ -name OWNERS \ -exec git update-index --skip-worktree \{\} \; \ -execdir g4 revert \{\} \; # Tell git to ignore these files that have Windows line endings, because Piper # will always change them to Unix line endings. git update-index --skip-worktree make.bat git update-index --skip-worktree make.py # Tell git to ignore files left out of the rsync (i.e. "deleted" files). git status --porcelain | \ grep -e "^ D" | \ cut -c 4- | \ xargs git update-index --skip-worktree