Chromium Code Reviews| Index: git-crrev-parse |
| diff --git a/git-crrev-parse b/git-crrev-parse |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..6a8313077be0d2d11698bb8366822f855293c6a5 |
| --- /dev/null |
| +++ b/git-crrev-parse |
| @@ -0,0 +1,50 @@ |
| +#!/usr/bin/env bash |
| +# Copyright 2015 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. |
| + |
| + |
| +# This git extension converts a chromium commit number to its git commit hash. |
| +# It accepts the following input formats: |
| +# |
| +# $ git crrev-parse Cr-Commit-Position: refs/heads/master@{#311769} |
| +# $ git crrev-parse ' Cr-Commit-Position: refs/heads/master@{#311769}' |
| +# $ git crrev-parse 'Cr-Commit-Position: refs/heads/master@{#311769}' |
| +# $ git crrev-parse refs/heads/master@{#311769} |
| +# |
| +# It also works for branches (assuming you have branches in your local |
| +# checkout): |
| +# |
| +# $ git crrev-parse refs/branch-heads/2278@{#2} |
| +# |
| +# If you don't specify a branch, refs/heads/master is assumed: |
| +# |
| +# $ git crrev-parse @{#311769} |
| +# $ git crrev-parse #311769 |
| +# $ git crrev-parse 311769 |
| + |
| + |
| +while [ -n "$1" ]; do |
| + if [[ "$1" = "Cr-Commit-Position:" ]] && [[ "$2" =~ .*@\{#[0-9][0-9]*\} ]]; then |
| + commit_pos="$2" |
| + shift |
| + else |
| + commit_pos="${1#*Cr-Commit-Position: }" |
| + fi |
| + ref="${commit_pos%@\{#*\}}" |
| + if [ "$ref" = "$commit_pos" -o -z "$ref" ]; then |
| + ref="refs/heads/master" |
| + fi |
| + ref="${ref/refs\/heads/refs\/remotes\/origin}" |
| + ref="${ref/refs\/branch-heads/refs\/remotes\/branch-heads}" |
| + num="${commit_pos#*@\{\#}" |
| + num="${num%\}}" |
| + |
| + if [ -z "$ref" -o -z "$num" ]; then |
| + git rev-parse "$1" |
| + else |
| + git rev-list -n 1 --grep="$commit_pos" "$ref" |
|
ghost stip (do not use)
2015/01/23 00:03:27
reconstruct commit_pos when grepping to reduce fal
szager1
2015/01/23 00:53:45
Done.
|
| + fi |
| + |
| + shift |
| +done |