1 #!/bin/bash -e 2 # 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 # This tool is used to update libvpx source code to a revision of the upstream 8 # repository. Modified from Chromium src/third_party/libvpx/update_libvpx.sh 9 10 # Usage: 11 # 12 # $ ./update_libvpx.sh [branch | revision | file or url containing a revision] 13 # When specifying a branch it may be necessary to prefix with origin/ 14 15 # Tools required for running this tool: 16 # 17 # 1. Linux / Mac 18 # 2. git 19 20 export LC_ALL=C 21 22 # Location for the remote git repository. 23 GIT_REPO="https://chromium.googlesource.com/webm/libvpx" 24 25 # Update to TOT by default. 26 GIT_BRANCH="origin/master" 27 28 # Relative path of target checkout. 29 LIBVPX_SRC_DIR="libvpx" 30 31 BASE_DIR=`pwd` 32 33 if [ -n "$1" ]; then 34 GIT_BRANCH="$1" 35 if [ -f "$1" ]; then 36 GIT_BRANCH=$(<"$1") 37 elif [[ $1 = http* ]]; then 38 GIT_BRANCH=`curl $1` 39 fi 40 fi 41 42 prev_hash="$(egrep "^Commit: [[:alnum:]]" README.android | awk '{ print $2 }')" 43 echo "prev_hash:$prev_hash" 44 45 rm -rf $LIBVPX_SRC_DIR 46 mkdir $LIBVPX_SRC_DIR 47 cd $LIBVPX_SRC_DIR 48 49 # Start a local git repo. 50 git clone $GIT_REPO . 51 52 # Switch the content to the desired revision. 53 git checkout -b tot $GIT_BRANCH 54 55 add="$(git diff-index --diff-filter=A $prev_hash | \ 56 tr -s [:blank:] ' ' | cut -f6 -d\ )" 57 delete="$(git diff-index --diff-filter=D $prev_hash | \ 58 tr -s [:blank:] ' ' | cut -f6 -d\ )" 59 60 # Get the current commit hash. 61 hash=$(git log -1 --format="%H") 62 63 # README reminder. 64 echo "Update README.android:" 65 echo "===============" 66 echo "Date: $(date +"%A %B %d %Y")" 67 echo "Branch: $GIT_BRANCH" 68 echo "Commit: $hash" 69 echo "===============" 70 echo "" 71 72 # Commit message header. 73 echo "Commit message:" 74 echo "===============" 75 echo "libvpx: Pull from upstream" 76 echo "" 77 78 # Output the current commit hash. 79 echo "Current HEAD: $hash" 80 echo "" 81 82 # Output log for upstream from current hash. 83 if [ -n "$prev_hash" ]; then 84 echo "git log from upstream:" 85 pretty_git_log="$(git log \ 86 --no-merges \ 87 --topo-order \ 88 --pretty="%h %s" \ 89 --max-count=20 \ 90 $prev_hash..$hash)" 91 if [ -z "$pretty_git_log" ]; then 92 echo "No log found. Checking for reverts." 93 pretty_git_log="$(git log \ 94 --no-merges \ 95 --topo-order \ 96 --pretty="%h %s" \ 97 --max-count=20 \ 98 $hash..$prev_hash)" 99 fi 100 echo "$pretty_git_log" 101 # If it makes it to 20 then it's probably skipping even more. 102 if [ `echo "$pretty_git_log" | wc -l` -eq 20 ]; then 103 echo "<...>" 104 fi 105 fi 106 107 # Commit message footer. 108 echo "" 109 echo "===============" 110 111 # Git is useless now, remove the local git repo. 112 rm -rf .git .gitignore .gitattributes 113 114 # Add and remove files. 115 echo "$add" | xargs -I {} git add {} 116 echo "$delete" | xargs -I {} git rm --ignore-unmatch {} 117 118 # Find empty directories and remove them. 119 find . -type d -empty -exec git rm {} \; 120 121 chmod 755 build/make/*.sh build/make/*.pl configure 122 123 cd $BASE_DIR 124