| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2015 the V8 project authors. All rights reserved. | 2 # Copyright 2015 the V8 project authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import argparse | 6 import argparse |
| 7 import os | 7 import os |
| 8 import sys | 8 import sys |
| 9 | 9 |
| 10 from search_related_commits import git_execute | 10 from search_related_commits import git_execute |
| 11 | 11 |
| 12 GIT_OPTION_HASH_ONLY = '--pretty=format:%H' | 12 GIT_OPTION_HASH_ONLY = '--pretty=format:%H' |
| 13 GIT_OPTION_NO_DIFF = '--quiet' | 13 GIT_OPTION_NO_DIFF = '--quiet' |
| 14 GIT_OPTION_ONELINE = '--oneline' | 14 GIT_OPTION_ONELINE = '--oneline' |
| 15 | 15 |
| 16 def describe_commit(git_working_dir, hash_to_search, one_line=False): | 16 def describe_commit(git_working_dir, hash_to_search, one_line=False): |
| 17 if one_line: | 17 if one_line: |
| 18 return git_execute(git_working_dir, ['show', | 18 return git_execute(git_working_dir, ['show', |
| 19 GIT_OPTION_NO_DIFF, | 19 GIT_OPTION_NO_DIFF, |
| 20 GIT_OPTION_ONELINE, | 20 GIT_OPTION_ONELINE, |
| 21 hash_to_search]).strip() | 21 hash_to_search]).strip() |
| 22 return git_execute(git_working_dir, ['show', | 22 return git_execute(git_working_dir, ['show', |
| 23 GIT_OPTION_NO_DIFF, | 23 GIT_OPTION_NO_DIFF, |
| 24 hash_to_search]).strip() | 24 hash_to_search]).strip() |
| 25 | 25 |
| 26 | 26 |
| 27 def get_followup_commits(git_working_dir, hash_to_search): | 27 def get_followup_commits(git_working_dir, hash_to_search): |
| 28 return git_execute(git_working_dir, ['log', | 28 cmd = ['log', '--grep=' + hash_to_search, GIT_OPTION_HASH_ONLY, |
| 29 '--grep=' + hash_to_search, | 29 'remotes/origin/master']; |
| 30 GIT_OPTION_HASH_ONLY, | 30 return git_execute(git_working_dir, cmd).strip().splitlines() |
| 31 'master']).strip().splitlines() | |
| 32 | 31 |
| 33 def get_merge_commits(git_working_dir, hash_to_search): | 32 def get_merge_commits(git_working_dir, hash_to_search): |
| 34 merges = get_related_commits_not_on_master(git_working_dir, hash_to_search) | 33 merges = get_related_commits_not_on_master(git_working_dir, hash_to_search) |
| 35 false_merges = get_related_commits_not_on_master( | 34 false_merges = get_related_commits_not_on_master( |
| 36 git_working_dir, 'Cr-Branched-From: ' + hash_to_search) | 35 git_working_dir, 'Cr-Branched-From: ' + hash_to_search) |
| 37 false_merges = set(false_merges) | 36 false_merges = set(false_merges) |
| 38 return ([merge_commit for merge_commit in merges | 37 return ([merge_commit for merge_commit in merges |
| 39 if merge_commit not in false_merges]) | 38 if merge_commit not in false_merges]) |
| 40 | 39 |
| 41 def get_related_commits_not_on_master(git_working_dir, grep_command): | 40 def get_related_commits_not_on_master(git_working_dir, grep_command): |
| 42 commits = git_execute(git_working_dir, ['log', | 41 commits = git_execute(git_working_dir, ['log', |
| 43 '--all', | 42 '--all', |
| 44 '--grep=' + grep_command, | 43 '--grep=' + grep_command, |
| 45 GIT_OPTION_ONELINE, | 44 GIT_OPTION_ONELINE, |
| 46 '--decorate', | 45 '--decorate', |
| 47 '--not', | 46 '--not', |
| 48 'master', | 47 'remotes/origin/master', |
| 49 GIT_OPTION_HASH_ONLY]) | 48 GIT_OPTION_HASH_ONLY]) |
| 50 return commits.splitlines() | 49 return commits.splitlines() |
| 51 | 50 |
| 52 def get_branches_for_commit(git_working_dir, hash_to_search): | 51 def get_branches_for_commit(git_working_dir, hash_to_search): |
| 53 branches = git_execute(git_working_dir, ['branch', | 52 branches = git_execute(git_working_dir, ['branch', |
| 54 '--contains', | 53 '--contains', |
| 55 hash_to_search, | 54 hash_to_search, |
| 56 '-a']).strip() | 55 '-a']).strip() |
| 57 branches = branches.splitlines() | 56 branches = branches.splitlines() |
| 58 return map(str.strip, branches) | 57 return map(str.strip, branches) |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 help='The path to your git working directory.') | 103 help='The path to your git working directory.') |
| 105 | 104 |
| 106 parser.add_argument('hash', | 105 parser.add_argument('hash', |
| 107 nargs=1, | 106 nargs=1, |
| 108 help='Hash of the commit to be searched.') | 107 help='Hash of the commit to be searched.') |
| 109 | 108 |
| 110 args = sys.argv[1:] | 109 args = sys.argv[1:] |
| 111 options = parser.parse_args(args) | 110 options = parser.parse_args(args) |
| 112 | 111 |
| 113 sys.exit(print_analysis(options.git_dir, options.hash[0])) | 112 sys.exit(print_analysis(options.git_dir, options.hash[0])) |
| OLD | NEW |