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

Unified Diff: git-crrev-parse

Issue 868943002: Convenience git extension for converting a chromium git commit number to a git hash. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Fix grep string for git rev-list Created 5 years, 11 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git-crrev-parse
diff --git a/git-crrev-parse b/git-crrev-parse
new file mode 100755
index 0000000000000000000000000000000000000000..77318fe6e05f6e8de2c1cfd679a4a5b1c2dce62b
--- /dev/null
+++ b/git-crrev-parse
@@ -0,0 +1,53 @@
+#!/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
+
+# Developer note: this script makes heavy use of prefix/suffix/pattern
+# substitution for bash variables. Refer to the "Parameter Expansion"
+# section of the man page for bash.
+
+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
+ 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
+ remote_ref="${remote_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
+ grep_str="Cr-Commit-Position: $ref@{#$num}"
+ git rev-list -n 1 --grep="$grep_str" "$remote_ref"
+ fi
+
+ shift
+done
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698