Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: update_google_patch.sh

Issue 306793002: [hunspell] Script to automatically generate google.patch (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/hunspell.git@master
Patch Set: Once more rebasing. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « README.chromium ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: update_google_patch.sh
diff --git a/update_google_patch.sh b/update_google_patch.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6b7357adb8210a289d35555bcdd0d365820efffa
--- /dev/null
+++ b/update_google_patch.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Creates an updated google.patch that reflects all checked-in changes in the
+# current branch. To do this, it
+# 1) Checks out the baseline from CVS into a separate /tmp directory.
+# 2) Applies all changes third_party/hunspell had since baseline to the CVS dir.
+# 2a) Applying google.patch at current branches upstream revision
+# 2b) Applying all changes made in the current branch since upstream
+# 3) Diffs the updated CVS dir against the checkout made in 1)
+#
+# No files in the current branch except google.patch will be modified, and
+# applying google.patch to the CVS baseline catches baseline up to
+# third_party/hunspell.
+
+cvs_dir=""
+tempfiles=( )
+tmplate="/tmp/`basename $0`.XXXXXX"
+
+# Cleanup function to be executed whenever the script exits.
+function cleanup() {
+ if [[ $cvs_dir ]]; then
+ rm -r "${cvs_dir}"
+ fi
+
+ if [[ ${tempfiles[@]} ]]; then
+ rm "${tempfiles[@]}"
+ fi
+ cd ${starting_dir}
+}
+trap cleanup 0
+
+# Generate a temp file and register it for cleanup
+function tempfile() {
+ local result=$1
+ local tmpfile=$(mktemp ${tmplate}) || exit 1
+ tempfiles+=( "${tmpfile}" )
+ eval $result="'$tmpfile'"
+}
+
+starting_dir=$(pwd)
+hunspell_dir=$(dirname $(readlink -e $0))
+
+# Temp file with a list of all excluded files
+tempfile filter_file
+cat << EOF > ${filter_file}
+google.patch
+update_google_patch.sh
+README.chromium
+EOF
+
+# List of all files changed relative to upstream in current branch.
+changed_files=$(git --no-pager diff @{u} --name-status | grep -vf ${filter_file} )
+
+# Check we don't actually have files that are added or deleted, because
+# that can't be handled by the read-only CVS checkout.
+added_files=$( echo "${changed_files}" | grep "^A")
+if [[ ${added_files} ]] ; then
+ echo "Script cannot handle added files"
+ exit 1
+fi
+deleted_files=$( echo "${changed_files}" | grep "^D")
+if [[ ${deleted_files} ]] ; then
+ echo "Script cannot handle deleted files"
+ exit 1
+fi
+
+# Generate patch between branch point from upstream and current HEAD.
+diff_files=$( echo "${changed_files}" | grep "^M" | cut -f1 --complement )
+tempfile local_patch_file
+echo "${diff_files}" | xargs -IXX git --no-pager diff --no-prefix @{u} -- XX > ${local_patch_file}
+
+# Create copy of google.patch at branch point version.
+tempfile google_patch_file
+git show @{u}:google.patch > ${google_patch_file}
+
+# Create a temporary checkout for CVS hunspell's baseline. All further work
+# will happen in this temp directory.
+cvs_dir=$(mktemp -d ${tmplate}) || exit 1
+
+# Get CVS hunspell baseline.
+cd ${cvs_dir}
+echo Checking out CVS version.
+cvs -z3 \
+ -qd:pserver:anonymous@hunspell.cvs.sourceforge.net:/cvsroot/hunspell \
+ co -D "23 Mar 2012" -P hunspell
+
+# Apply google.patch and changes in current branch to CVS hunspell baseline.
+cd hunspell
+echo Applying google.patch.
+patch -p0 -i ${google_patch_file}
+echo Applying local patch.
+patch -p0 -i ${local_patch_file}
+
+# And generate a new google.patch by diffing modified CVS hunspell against CVS
+# hunspell baseline.
+echo Updating google.patch.
+cvs -q diff -u > ${hunspell_dir}/google.patch
+
« no previous file with comments | « README.chromium ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698