Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """Gclient-specific SCM-specific operations.""" | 5 """Gclient-specific SCM-specific operations.""" |
| 6 | 6 |
| 7 import logging | 7 import logging |
| 8 import os | 8 import os |
| 9 import re | 9 import re |
| 10 import subprocess | 10 import subprocess |
| 11 | 11 |
| 12 import scm | 12 import scm |
| 13 import gclient_utils | 13 import gclient_utils |
| 14 | 14 |
| 15 | 15 |
| 16 ### SCM abstraction layer | 16 ### SCM abstraction layer |
| 17 | 17 |
| 18 # Factory Method for SCM wrapper creation | 18 # Factory Method for SCM wrapper creation |
| 19 | 19 |
| 20 def CreateSCM(url=None, root_dir=None, relpath=None, scm_name='svn'): | 20 def CreateSCM(url=None, root_dir=None, relpath=None, scm_name='svn'): |
| 21 # TODO(maruel): Deduce the SCM from the url. | 21 # TODO(maruel): Deduce the SCM from the url. |
| 22 scm_map = { | 22 scm_map = { |
| 23 'svn' : SVNWrapper, | 23 'svn' : SVNWrapper, |
| 24 'git' : GitWrapper, | 24 'git' : GitWrapper, |
| 25 } | 25 } |
| 26 | 26 |
| 27 if url and (url.startswith('git:') or | 27 orig_url = url |
| 28 url.startswith('ssh:') or | 28 |
| 29 url.endswith('.git')): | 29 if url: |
| 30 scm_name = 'git' | 30 url, _ = gclient_utils.SplitUrlRevision(url) |
|
M-A Ruel
2009/11/19 18:36:52
smells go here. :)
| |
| 31 if url.startswith('git:') or url.startswith('ssh:') or url.endswith('.git'): | |
| 32 scm_name = 'git' | |
| 31 | 33 |
| 32 if not scm_name in scm_map: | 34 if not scm_name in scm_map: |
| 33 raise gclient_utils.Error('Unsupported scm %s' % scm_name) | 35 raise gclient_utils.Error('Unsupported scm %s' % scm_name) |
| 34 return scm_map[scm_name](url, root_dir, relpath, scm_name) | 36 return scm_map[scm_name](orig_url, root_dir, relpath, scm_name) |
| 35 | 37 |
| 36 | 38 |
| 37 # SCMWrapper base class | 39 # SCMWrapper base class |
| 38 | 40 |
| 39 class SCMWrapper(object): | 41 class SCMWrapper(object): |
| 40 """Add necessary glue between all the supported SCM. | 42 """Add necessary glue between all the supported SCM. |
| 41 | 43 |
| 42 This is the abstraction layer to bind to different SCM. Since currently only | 44 This is the abstraction layer to bind to different SCM. Since currently only |
| 43 subversion is supported, a lot of subersionism remains. This can be sorted out | 45 subversion is supported, a lot of subersionism remains. This can be sorted out |
| 44 once another SCM is supported.""" | 46 once another SCM is supported.""" |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 453 self.ReplaceAndPrint(line) | 455 self.ReplaceAndPrint(line) |
| 454 else: | 456 else: |
| 455 if (line.startswith(self.original_prefix) or | 457 if (line.startswith(self.original_prefix) or |
| 456 line.startswith(self.working_prefix)): | 458 line.startswith(self.working_prefix)): |
| 457 self.ReplaceAndPrint(line) | 459 self.ReplaceAndPrint(line) |
| 458 else: | 460 else: |
| 459 print line | 461 print line |
| 460 | 462 |
| 461 filterer = DiffFilterer(self.relpath) | 463 filterer = DiffFilterer(self.relpath) |
| 462 self.RunAndFilterOutput(command, path, False, False, filterer.Filter) | 464 self.RunAndFilterOutput(command, path, False, False, filterer.Filter) |
| OLD | NEW |