OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium 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 sys | 7 import sys |
8 | 8 |
9 import subprocess2 | 9 import subprocess2 |
10 | 10 |
11 from git_common import current_branch, get_or_create_merge_base, config_list | 11 import git_common as git |
12 from git_common import GIT_EXE | |
13 | 12 |
14 def main(args): | 13 def main(args): |
15 default_args = config_list('depot-tools.upstream-diff.default-args') | 14 default_args = git.config_list('depot-tools.upstream-diff.default-args') |
16 args = default_args + args | 15 args = default_args + args |
17 | 16 |
18 parser = argparse.ArgumentParser() | 17 parser = argparse.ArgumentParser() |
19 parser.add_argument('--wordwise', action='store_true', default=False, | 18 parser.add_argument('--wordwise', action='store_true', default=False, |
20 help=( | 19 help=( |
21 'Print a colorized wordwise diff ' | 20 'Print a colorized wordwise diff ' |
22 'instead of line-wise diff')) | 21 'instead of line-wise diff')) |
23 opts, extra_args = parser.parse_known_args(args) | 22 opts, extra_args = parser.parse_known_args(args) |
24 | 23 |
25 cmd = [GIT_EXE, 'diff', '--patience', '-C', '-C'] | 24 cur = git.current_branch() |
| 25 if not cur or cur == 'HEAD': |
| 26 print 'fatal: Cannot perform git-upstream-diff while not on a branch' |
| 27 return 1 |
| 28 |
| 29 par = git.upstream(cur) |
| 30 if not par: |
| 31 print 'fatal: No upstream configured for branch \'%s\'' % cur |
| 32 return 1 |
| 33 |
| 34 cmd = [git.GIT_EXE, 'diff', '--patience', '-C', '-C'] |
26 if opts.wordwise: | 35 if opts.wordwise: |
27 cmd += ['--word-diff=color', r'--word-diff-regex=(\w+|[^[:space:]])'] | 36 cmd += ['--word-diff=color', r'--word-diff-regex=(\w+|[^[:space:]])'] |
28 cmd += [get_or_create_merge_base(current_branch())] | 37 cmd += [git.get_or_create_merge_base(cur, par)] |
29 | 38 |
30 cmd += extra_args | 39 cmd += extra_args |
31 | 40 |
32 subprocess2.check_call(cmd) | 41 subprocess2.check_call(cmd) |
33 | 42 |
34 | 43 |
35 if __name__ == '__main__': | 44 if __name__ == '__main__': |
36 sys.exit(main(sys.argv[1:])) | 45 sys.exit(main(sys.argv[1:])) |
OLD | NEW |