12ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org#!/bin/bash -e 22ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 32ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved. 42ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Use of this source code is governed by a BSD-style license that can be 52ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# found in the LICENSE file. 62ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 72ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# This tool is used to update libvpx source code with the latest git 82ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# repository. 92ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 102ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Make sure you run this in a svn checkout of deps/third_party/libvpx! 112ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 122ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Usage: 132ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 147765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org# $ ./update_libvpx.sh [branch | revision | file or url containing a revision] 15ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org# When specifying a branch it may be necessary to prefix with origin/ 162ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 172ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Tools required for running this tool: 182ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 192ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 1. Linux / Mac 202ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 2. svn 212ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# 3. git 222ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 23a7ffde18ed261f2d570e0d9cb2ddc5ffc204b5ebtomfinegan@chromium.orgexport LC_ALL=C 24a7ffde18ed261f2d570e0d9cb2ddc5ffc204b5ebtomfinegan@chromium.org 252ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Location for the remote git repository. 262ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgGIT_REPO="http://git.chromium.org/webm/libvpx.git" 272ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 28ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.orgGIT_BRANCH="origin/master" 292ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgLIBVPX_SRC_DIR="source/libvpx" 302ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgBASE_DIR=`pwd` 312ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 32c1e5cf4c65bbfa134110b17fba3246ad3d7323b0hclam@chromium.orgif [ -n "$1" ]; then 33c1e5cf4c65bbfa134110b17fba3246ad3d7323b0hclam@chromium.org GIT_BRANCH="$1" 34ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org if [ -f "$1" ]; then 35ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org GIT_BRANCH=$(<"$1") 367765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org elif [[ $1 = http* ]]; then 377765c078fa920ba6c949c15f16b6cc979d8bb95bjohannkoenig@chromium.org GIT_BRANCH=`curl $1` 38ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org fi 39c1e5cf4c65bbfa134110b17fba3246ad3d7323b0hclam@chromium.orgfi 40c1e5cf4c65bbfa134110b17fba3246ad3d7323b0hclam@chromium.org 4193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgprev_hash="$(egrep "^Commit: [[:alnum:]]" README.chromium | awk '{ print $2 }')" 4236504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgecho "prev_hash:$prev_hash" 4336504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.org 445553ee2db7ceee0166364993aec31b01a98336achclam@chromium.orgrm -rf $(svn ls $LIBVPX_SRC_DIR) 455553ee2db7ceee0166364993aec31b01a98336achclam@chromium.orgsvn update $LIBVPX_SRC_DIR 465553ee2db7ceee0166364993aec31b01a98336achclam@chromium.org 472ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgcd $LIBVPX_SRC_DIR 482ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 492ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Make sure git doesn't mess up with svn. 502ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgecho ".svn" >> .gitignore 512ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 522ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Start a local git repo. 532ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orggit init 542ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orggit add . 552ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orggit commit -a -m "Current libvpx" 562ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 572ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Add the remote repo. 582ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orggit remote add origin $GIT_REPO 592ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orggit fetch 602ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 61ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.orgadd="$(git diff-index --diff-filter=D $GIT_BRANCH | \ 622ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgtr -s '\t' ' ' | cut -f6 -d\ )" 63ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.orgdelete="$(git diff-index --diff-filter=A $GIT_BRANCH | \ 642ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgtr -s '\t' ' ' | cut -f6 -d\ )" 652ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 662ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Switch the content to the latest git repo. 67ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.orggit checkout -b tot $GIT_BRANCH 682ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 69ff46d66d17e2de1940de6a75dedfe3e90d34ee5afgalligan@chromium.org# Output the current commit hash. 70ff46d66d17e2de1940de6a75dedfe3e90d34ee5afgalligan@chromium.orghash=$(git log -1 --format="%H") 7136504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgecho "Current HEAD: $hash" 7236504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.org 7336504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.org# Output log for upstream from current hash. 7436504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgif [ -n "$prev_hash" ]; then 7536504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.org echo "git log from upstream:" 7617fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org pretty_git_log="$(git log \ 7717fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --no-merges \ 7817fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --topo-order \ 7917fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --pretty="%h %s" \ 8017fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org $prev_hash..$hash)" 81ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org if [ -z "$pretty_git_log" ]; then 82ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org echo "No log found. Checking for reverts." 8317fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org pretty_git_log="$(git log \ 8417fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --no-merges \ 8517fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --topo-order \ 8617fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org --pretty="%h %s" \ 8717fcbf6b40c020754cadbd1f719a7974bf98db24johannkoenig@chromium.org $hash..$prev_hash)" 88ebb1c502db75cd4bb97f9dded7c206464eb8afa2johannkoenig@chromium.org fi 8936504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.org echo "$pretty_git_log" 9036504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgfi 91ff46d66d17e2de1940de6a75dedfe3e90d34ee5afgalligan@chromium.org 922ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Git is useless now, remove the local git repo. 932ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgrm -rf .git 942ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 952ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Update SVN with the added and deleted files. 9636504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgecho "$add" | xargs -I {} svn add --parents {} 9736504e6f3126c1d97edf9b059e9f90167fc71eccfgalligan@chromium.orgecho "$delete" | xargs -I {} svn rm {} 982ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 992ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org# Find empty directories and remove them from SVN. 1002ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgfind . -type d -empty -not -iwholename '*.svn*' -exec svn rm {} \; 1012ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.org 1025553ee2db7ceee0166364993aec31b01a98336achclam@chromium.orgchmod 755 build/make/*.sh build/make/*.pl configure 1035553ee2db7ceee0166364993aec31b01a98336achclam@chromium.org 1042ddf8a38184d75b4831e7a282c2b3b2c706af4cfhclam@chromium.orgcd $BASE_DIR 105