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