OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/env bash | |
2 # Copyright 2015 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 | |
7 # This git extension converts a chromium commit number to its git commit hash. | |
8 # It accepts the following input formats: | |
9 # | |
10 # $ git crrev-parse Cr-Commit-Position: refs/heads/master@{#311769} | |
11 # $ git crrev-parse ' Cr-Commit-Position: refs/heads/master@{#311769}' | |
12 # $ git crrev-parse 'Cr-Commit-Position: refs/heads/master@{#311769}' | |
13 # $ git crrev-parse refs/heads/master@{#311769} | |
14 # | |
15 # It also works for branches (assuming you have branches in your local | |
16 # checkout): | |
17 # | |
18 # $ git crrev-parse refs/branch-heads/2278@{#2} | |
19 # | |
20 # If you don't specify a branch, refs/heads/master is assumed: | |
21 # | |
22 # $ git crrev-parse @{#311769} | |
23 # $ git crrev-parse 311769 | |
24 | |
25 # Developer note: this script makes heavy use of prefix/suffix/pattern | |
26 # substitution for bash variables. Refer to the "Parameter Expansion" | |
27 # section of the man page for bash. | |
28 | |
29 while [ -n "$1" ]; do | |
30 if [[ "$1" = "Cr-Commit-Position:" ]] && [[ "$2" =~ .*@\{#[0-9][0-9]*\} ]]; th en | |
31 commit_pos="$2" | |
32 shift | |
33 else | |
34 commit_pos="${1#*Cr-Commit-Position: }" | |
35 fi | |
36 ref="${commit_pos%@\{#*\}}" | |
37 if [ "$ref" = "$commit_pos" -o -z "$ref" ]; then | |
38 ref="refs/heads/master" | |
39 fi | |
40 remote_ref="${ref/refs\/heads/refs\/remotes\/origin}" | |
tfarina
2015/12/03 00:36:51
For some reason this does not work on my setup.
T
| |
41 remote_ref="${remote_ref/refs\/branch-heads/refs\/remotes\/branch-heads}" | |
42 num="${commit_pos#*@\{\#}" | |
43 num="${num%\}}" | |
44 | |
45 if [ -z "$ref" -o -z "$num" ]; then | |
46 git rev-parse "$1" | |
47 else | |
48 grep_str="Cr-Commit-Position: $ref@{#$num}" | |
49 git rev-list -n 1 --grep="$grep_str" "$remote_ref" | |
50 fi | |
51 | |
52 shift | |
53 done | |
OLD | NEW |