| #!/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 |
| |