Chromium Code Reviews| Index: gclient.py |
| diff --git a/gclient.py b/gclient.py |
| index 48ac3a7f01002c98d4554801e8b8b78614c66818..a52dedfc82c7c7fde51c74409ee1a83e6732d84c 100644 |
| --- a/gclient.py |
| +++ b/gclient.py |
| @@ -641,23 +641,31 @@ class Dependency(gclient_utils.WorkItem, DependencySettings): |
| env['GCLIENT_SCM'] = scm |
| if parsed_url: |
| env['GCLIENT_URL'] = parsed_url |
| - if options.prepend_dir: |
| + if options.prepend_dir and scm == 'git': |
| print_stdout = False |
| def filter_fn(line): |
| + """Git-specific path marshaling. It is optimized for git-grep.""" |
| + |
| + def mod_path(git_pathspec): |
| + match = re.match('^(\S+?:)?([^\0]+)$', git_pathspec) |
|
M-A Ruel
2012/11/28 02:20:33
Then concatenate the two strings to make it clear
|
| + modified_path = os.path.join(self.name, match.group(2)) |
| + branch = match.group(1) or '' |
| + return '%s%s' % (branch, modified_path) |
| + |
| + match = re.match('^Binary file ([^\0]+) matches$', line) |
| + if match: |
| + print 'Binary file %s matches' % mod_path(match.group(1)) |
| + return |
| + |
| items = line.split('\0') |
| - if len(items) == 1: |
| - match = re.match('Binary file (.*) matches$', line) |
| - if match: |
| - print 'Binary file %s matches' % os.path.join( |
| - self.name, match.group(1)) |
| - else: |
| - print line |
| - elif len(items) == 2 and items[1]: |
| - print '%s : %s' % (os.path.join(self.name, items[0]), items[1]) |
| - else: |
| + if len(items) == 2 and items[1]: |
| + print '%s : %s' % (mod_path(items[0]), items[1]) |
| + elif len(items) >= 2: |
| # Multiple null bytes or a single trailing null byte indicate |
| # git is likely displaying filenames only (such as with -l) |
| - print '\n'.join(os.path.join(self.name, f) for f in items if f) |
| + print '\n'.join(mod_path(path) for path in items if path) |
| + else: |
| + print line |
| else: |
| print_stdout = True |
| filter_fn = None |