| Index: gce/uploader_iteration.sh
|
| diff --git a/gce/uploader_iteration.sh b/gce/uploader_iteration.sh
|
| index a9ac7412e8c6d37bcf9ee10d533ca29ce9c85dfa..236b7e9d463b246da4219e5539a954ecf21e77e9 100755
|
| --- a/gce/uploader_iteration.sh
|
| +++ b/gce/uploader_iteration.sh
|
| @@ -30,8 +30,11 @@ cd "$SOURCE_DIR"
|
|
|
| mark_step 'Updating chromium'
|
| unlock_git_repo Chromium || exit $EXIT_CHROMIUM_UPDATE
|
| -git reset --hard master || exit $EXIT_CHROMIUM_UPDATE
|
| -git pull || exit $EXIT_CHROMIUM_UPDATE
|
| +git bisect reset || exit $EXIT_CHROMIUM_UPDATE
|
| +git reset --hard || exit $EXIT_CHROMIUM_UPDATE
|
| +git clean -df || exit $EXIT_CHROMIUM_UPDATE
|
| +git checkout master || exit $EXIT_CHROMIUM_UPDATE
|
| +git pull origin || exit $EXIT_CHROMIUM_UPDATE
|
| CHROMIUM_GYP_REVISION="$(cat DEPS | $SCRIPT_DIR/uploader_helper.py --find_project_revision='src/tools/gyp')"
|
|
|
| mark_step 'Updating gyp'
|
| @@ -41,15 +44,48 @@ git fetch || exit $EXIT_GYP_UPDATE
|
| git reset --hard $CHROMIUM_GYP_REVISION || exit $EXIT_GYP_UPDATE
|
| popd
|
|
|
| -mark_step 'Getting the last Blink revision for which the frontend has been uploaded'
|
| +# The commits where LASTCHANGE.blink got fixed. All branches after the Blink merge
|
| +# should use the same as for master branch, but branches for M45 and M46 have
|
| +# their own commits.
|
| +mark_step 'Figuring out the list of branches'
|
| +declare -A FIRST_GOOD_COMMITS_AFTER_MERGE=(
|
| + ["master"]=f880f0071d47ec1aa9608245222ad0b6f350e48c
|
| + ["branch-heads/2454"]=2d9701ab99b7de44897c731ff8f16dafb8fd7834
|
| + ["branch-heads/2490"]=9a2f5e019e324fab91c29681c18937c4435c309b
|
| +)
|
| +# Special branches.
|
| +BRANCHES_LIST="master branch-heads/2454 branch-heads/2490"
|
| +# Get a list of branches that were branched after the "first good commit"
|
| +# (post-merge) on master. This can take a lot of time, unfortunately,
|
| +# because the number of branches is excessive.
|
| +BRANCHES_LIST="$BRANCHES_LIST $(git branch -r --contains ${FIRST_GOOD_COMMITS_AFTER_MERGE[master]} --list 'branch-heads/*')"
|
| +
|
| +mark_step 'Getting the list of commits to upload'
|
| GS_PATH=gs://chrome-devtools-frontend
|
| KNOWN_REVISIONS_DIR="$GS_PATH/revs"
|
| -ALL_UPLOADED_REVS=$(gsutil ls "$KNOWN_REVISIONS_DIR") || exit $EXIT_LAST_UPLOADED_BLINK_REV
|
| -LAST_BLINK_REVISION=$(echo "$ALL_UPLOADED_REVS" | sed -e "s#^$KNOWN_REVISIONS_DIR/@##" | sort -nr | head -n 1)
|
| -if [ -z "$LAST_BLINK_REVISION" ]; then
|
| - exit $EXIT_LAST_UPLOADED_BLINK_REV
|
| -fi
|
| -echo "Last uploaded was for Blink revision $LAST_BLINK_REVISION"
|
| +REVISION_LIST=""
|
| +for BRANCH in $BRANCHES_LIST; do
|
| + echo "Branch $BRANCH"
|
| + # Use bisect to find the first not yet uploaded commit.
|
| + # First, make sure that master hasn't been uploaded and thus is "bad",
|
| + # otherwise bisect will be confused.
|
| + if gsutil ls "$KNOWN_REVISIONS_DIR/@$(git rev-parse $BRANCH)"; then
|
| + echo "On $BRANCH no new commits since the last upload"
|
| + else
|
| + FIRST_GOOD=${FIRST_GOOD_COMMITS_AFTER_MERGE["$BRANCH"]}
|
| + if [ -z "$FIRST_GOOD" ]; then
|
| + FIRST_GOOD=${FIRST_GOOD_COMMITS_AFTER_MERGE["master"]}
|
| + fi
|
| + git bisect start --no-checkout $BRANCH $FIRST_GOOD || exit $EXIT_LAST_UPLOADED_BLINK_REV
|
| + git bisect run sh -c "$SCRIPT_DIR/uploader_bisect_helper.sh $KNOWN_REVISIONS_DIR/@" || exit $EXIT_LAST_UPLOADED_BLINK_REV
|
| + # BISECT_HEAD now points to the last "good" commit.
|
| + # There is some kind of a side effect, we need to retrieve it first.
|
| + git rev-parse BISECT_HEAD
|
| + # Get the list of all "bad" commits, starting from the oldest commit.
|
| + REVISION_LIST="$REVISION_LIST $(git rev-list --reverse $BRANCH ^BISECT_HEAD)"
|
| + git bisect reset || exit $EXIT_LAST_UPLOADED_BLINK_REV
|
| + fi
|
| +done
|
|
|
| mark_step 'Getting Blink revisions blacklist'
|
| BLINK_REVISIONS_BLACKLIST_FILE=$GS_PATH/blink_revisions_blacklist
|
| @@ -58,17 +94,6 @@ if gsutil ls "$BLINK_REVISIONS_BLACKLIST_FILE"; then
|
| BLINK_REVISIONS_BLACKLIST=$(gsutil cat "$BLINK_REVISIONS_BLACKLIST_FILE")
|
| fi
|
|
|
| -mark_step 'Working out SVN revisions list'
|
| -pushd third_party/WebKit
|
| -git fetch || exit $EXIT_BLINK_UPDATE
|
| -HEAD_BLINK_REVISION=$(git log -n 1 --all --grep="git-svn-id:" --pretty=medium | grep -Po "git-svn-id:[^@]*@\d+" | grep -Po "@\d+" | grep -Po "\d+")
|
| -popd
|
| -echo "Last committed was Blink revision $HEAD_BLINK_REVISION"
|
| -REVISION_LIST=$(seq $[LAST_BLINK_REVISION+1] $HEAD_BLINK_REVISION)
|
| -if [ -z "$REVISION_LIST" ]; then
|
| - exit $EXIT_NO_UPDATED_BRANCHES
|
| -fi
|
| -
|
| mark_step 'Building DevTools frontend for revisions and uploading to Cloud Storage'
|
| for REVISION in $REVISION_LIST; do
|
| LOCAL_STORAGE_DIR=/uploader/storage
|
| @@ -86,19 +111,14 @@ for REVISION in $REVISION_LIST; do
|
| continue
|
| fi
|
|
|
| - pushd third_party/WebKit
|
| - REVISION_COMMIT=$(git log -n 1 --all --grep="git-svn-id:[^@]*@$REVISION" --pretty=oneline | awk '{ print $1; }')
|
| - if [ -z "$REVISION_COMMIT" ]; then
|
| - echo "@$REVISION ==> missing!"
|
| - popd
|
| - continue
|
| - fi
|
| - echo "@$REVISION ==> $REVISION_COMMIT"
|
| - unlock_git_repo Blink || exit $EXIT_BLINK_UPDATE
|
| - git reset --hard $REVISION_COMMIT || exit $EXIT_BLINK_UPDATE
|
| + echo "Processing $REVISION"
|
| + git reset --hard || exit $EXIT_BLINK_UPDATE
|
| + git clean -df || exit $EXIT_BLINK_UPDATE
|
| + git checkout $REVISION || exit $EXIT_BLINK_UPDATE
|
|
|
| # Exclude "trunk" to work around branches that accidentally have a second
|
| # copy of Blink sources inside it. See http://crbug.com/450975
|
| + pushd third_party/WebKit
|
| DEVTOOLS_GYP=$(find . -type f -name devtools.gyp -not -path "*/trunk/*")
|
| if [ -z "$DEVTOOLS_GYP" ]; then
|
| exit $EXIT_DEVTOOLS_GYP_FILE
|
|
|