From 5a30792458f5de436f112036e43beee15d8ea381 Mon Sep 17 00:00:00 2001 From: "szager@chromium.org" Date: Wed, 26 Sep 2012 21:16:20 +0000 Subject: [PATCH] git command to find a git revision corresponding to lkgr. Review URL: https://chromiumcodereview.appspot.com/10958056 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@158892 0039d316-1c4b-4281-b951-d872f2087c98 --- git-lkgr | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 git-lkgr diff --git a/git-lkgr b/git-lkgr new file mode 100755 index 0000000000..e0c7a332e1 --- /dev/null +++ b/git-lkgr @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright (c) 2012 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. + +svn_lkgr=`curl -s http://chromium-status.appspot.com/lkgr` +if [ $? != 0 -o -z "$svn_lkgr" ]; then + echo 'Could not get svn lkgr from chromium-status.appspot.com/lkgr' + exit 1 +fi + +# Run a trivial git-svn command to force it to update the revision cache +# (which causes spew that might otherwise confuse the next command). +git svn info > /dev/null +if [ $? != 0 ]; then + cat <&2 +Could not run a trivial git-svn command. You probably need to set up your +working directory for git-svn, by following these instructions: + +http://code.google.com/p/chromium/wiki/UsingNewGit#Initial_checkout +EOF + exit 1 +fi + +git_lkgr=`git svn find-rev r${svn_lkgr}` +if [ $? != 0 -o -z "$git_lkgr" ]; then + cat <&2 +Could not map svn revision ${svn_lkgr} to a git commit. +You may need to `git fetch` and try again. +EOF + exit 1 +fi + +set -o pipefail +closest_commit=`git rev-list --ancestry-path \ + --grep='SVN changes up to revision [0-9]*' \ + ${git_lkgr}..refs/remotes/origin/master | tail -1` +if [ $? != 0 -o -z "$closest_commit" ]; then + cat <&2 +Could not find a blessed git commit (with accurate .DEPS.git and submodules) +after svn lkgr revision $svn_lkgr. +EOF + exit 1 +fi + +closest_svn_commit=`git rev-list -n 1 ${closest_commit}^1` +if [ $? != 0 -o -z "$closest_svn_commit" ]; then + cat <&2 +I am thoroughly confused. Please file a bug report at http://new.crbug.com. +EOF + exit 1 +fi + +if [ "${closest_svn_commit}" = "${git_lkgr}" ]; then + echo "${closest_commit}" + exit 0 +else + cat <&2 +There is no master commit which corresponds exactly to lkgr. +The closest commit is ${closest_commit}. +EOF + exit 1 +fi