| OLD | NEW |
| (Empty) |
| 1 #!/bin/bash | |
| 2 | |
| 3 # Copyright 2014 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 # Creates an updated google.patch that reflects all checked-in changes in the | |
| 8 # current branch. To do this, it | |
| 9 # 1) Checks out the baseline from CVS into a separate /tmp directory. | |
| 10 # 2) Applies all changes third_party/hunspell had since baseline to the CVS dir. | |
| 11 # 2a) Applying google.patch at current branches upstream revision | |
| 12 # 2b) Applying all changes made in the current branch since upstream | |
| 13 # 3) Diffs the updated CVS dir against the checkout made in 1) | |
| 14 # | |
| 15 # No files in the current branch except google.patch will be modified, and | |
| 16 # applying google.patch to the CVS baseline catches baseline up to | |
| 17 # third_party/hunspell. | |
| 18 | |
| 19 cvs_dir="" | |
| 20 tempfiles=( ) | |
| 21 tmplate="/tmp/`basename $0`.XXXXXX" | |
| 22 | |
| 23 # Cleanup function to be executed whenever the script exits. | |
| 24 function cleanup() { | |
| 25 if [[ $cvs_dir ]]; then | |
| 26 rm -r "${cvs_dir}" | |
| 27 fi | |
| 28 | |
| 29 if [[ ${tempfiles[@]} ]]; then | |
| 30 rm "${tempfiles[@]}" | |
| 31 fi | |
| 32 cd ${starting_dir} | |
| 33 } | |
| 34 trap cleanup 0 | |
| 35 | |
| 36 # Generate a temp file and register it for cleanup | |
| 37 function tempfile() { | |
| 38 local result=$1 | |
| 39 local tmpfile=$(mktemp ${tmplate}) || exit 1 | |
| 40 tempfiles+=( "${tmpfile}" ) | |
| 41 eval $result="'$tmpfile'" | |
| 42 } | |
| 43 | |
| 44 starting_dir=$(pwd) | |
| 45 hunspell_dir=$(dirname $(readlink -e $0)) | |
| 46 | |
| 47 # Temp file with a list of all excluded files | |
| 48 tempfile filter_file | |
| 49 cat << EOF > ${filter_file} | |
| 50 google.patch | |
| 51 update_google_patch.sh | |
| 52 README.chromium | |
| 53 EOF | |
| 54 | |
| 55 # List of all files changed relative to upstream in current branch. | |
| 56 changed_files=$(git --no-pager diff @{u} --name-status | grep -vf ${filter_file}
) | |
| 57 | |
| 58 # Check we don't actually have files that are added or deleted, because | |
| 59 # that can't be handled by the read-only CVS checkout. | |
| 60 added_files=$( echo "${changed_files}" | grep "^A") | |
| 61 if [[ ${added_files} ]] ; then | |
| 62 echo "Script cannot handle added files" | |
| 63 exit 1 | |
| 64 fi | |
| 65 deleted_files=$( echo "${changed_files}" | grep "^D") | |
| 66 if [[ ${deleted_files} ]] ; then | |
| 67 echo "Script cannot handle deleted files" | |
| 68 exit 1 | |
| 69 fi | |
| 70 | |
| 71 # Generate patch between branch point from upstream and current HEAD. | |
| 72 diff_files=$( echo "${changed_files}" | grep "^M" | cut -f1 --complement ) | |
| 73 tempfile local_patch_file | |
| 74 echo "${diff_files}" | xargs -IXX git --no-pager diff --no-prefix @{u} -- XX > $
{local_patch_file} | |
| 75 | |
| 76 # Create copy of google.patch at branch point version. | |
| 77 tempfile google_patch_file | |
| 78 git show @{u}:google.patch > ${google_patch_file} | |
| 79 | |
| 80 # Create a temporary checkout for CVS hunspell's baseline. All further work | |
| 81 # will happen in this temp directory. | |
| 82 cvs_dir=$(mktemp -d ${tmplate}) || exit 1 | |
| 83 | |
| 84 # Get CVS hunspell baseline. | |
| 85 cd ${cvs_dir} | |
| 86 echo Checking out CVS version. | |
| 87 cvs -z3 \ | |
| 88 -qd:pserver:anonymous@hunspell.cvs.sourceforge.net:/cvsroot/hunspell \ | |
| 89 co -D "23 Mar 2012" -P hunspell | |
| 90 | |
| 91 # Apply google.patch and changes in current branch to CVS hunspell baseline. | |
| 92 cd hunspell | |
| 93 echo Applying google.patch. | |
| 94 patch -p0 -i ${google_patch_file} | |
| 95 echo Applying local patch. | |
| 96 patch -p0 -i ${local_patch_file} | |
| 97 | |
| 98 # And generate a new google.patch by diffing modified CVS hunspell against CVS | |
| 99 # hunspell baseline. | |
| 100 echo Updating google.patch. | |
| 101 cvs -q diff -u > ${hunspell_dir}/google.patch | |
| 102 | |
| OLD | NEW |