Chromium Code Reviews| Index: trychange.py |
| =================================================================== |
| --- trychange.py (revision 104096) |
| +++ trychange.py (working copy) |
| @@ -93,7 +93,7 @@ |
| class SCM(object): |
| """Simplistic base class to implement one function: ProcessOptions.""" |
| - def __init__(self, options, path): |
| + def __init__(self, options, path, file_list): |
| items = path.split('@') |
| assert len(items) <= 2 |
| self.checkout_root = items[0] |
| @@ -103,8 +103,8 @@ |
| # Lazy-load file list from the SCM unless files were specified in options. |
| self._files = None |
| self._file_tuples = None |
| - if self.options.files: |
| - self._files = self.options.files |
| + if file_list: |
| + self._files = file_list |
| self._file_tuples = [('M', f) for f in self.files] |
| self.options.files = None |
| self.codereview_settings = None |
| @@ -436,7 +436,7 @@ |
| print(text) |
| -def GuessVCS(options, path): |
| +def GuessVCS(options, path, file_list): |
| """Helper to guess the version control system. |
| NOTE: Very similar to upload.GuessVCS. Doesn't look for hg since we don't |
| @@ -454,7 +454,7 @@ |
| logging.info("GuessVCS(%s)" % path) |
| # Subversion has a .svn in all working directories. |
| if os.path.isdir(os.path.join(real_path, '.svn')): |
| - return SVN(options, path) |
| + return SVN(options, path, file_list) |
| # Git has a command to test if you're in a git tree. |
| # Try running it, but don't die if we don't have git installed. |
| @@ -462,7 +462,7 @@ |
| subprocess2.check_output( |
| ['git', 'rev-parse', '--is-inside-work-tree'], cwd=real_path, |
| stderr=subprocess2.VOID) |
| - return GIT(options, path) |
| + return GIT(options, path, file_list) |
| except subprocess2.CalledProcessError, e: |
| if e.returncode != errno.ENOENT and e.returncode != 128: |
| # ENOENT == 2 = they don't have git installed. |
| @@ -499,10 +499,6 @@ |
| change: Change instance corresponding to the CL. |
| swallow_exception: Whether we raise or swallow exceptions. |
| """ |
| - file_list = [] |
| - if change: |
| - file_list = [f.LocalPath() for f in change.AffectedFiles()] |
| - |
| # Parse argv |
| parser = optparse.OptionParser(usage=USAGE, |
| version=__version__, |
| @@ -569,7 +565,7 @@ |
| parser.add_option_group(group) |
| group = optparse.OptionGroup(parser, "Patch to run") |
| - group.add_option("-f", "--file", default=file_list, dest="files", |
| + group.add_option("-f", "--file", default=[], dest="files", |
| metavar="FILE", action="append", |
| help="Use many times to list the files to include in the " |
| "try, relative to the repository root") |
| @@ -679,13 +675,21 @@ |
| # Always include os.getcwd() in the checkout settings. |
| checkouts = [] |
| path = os.getcwd() |
| + |
| + file_list = [] |
| + if options.files: |
| + file_list = options.files |
| + elif change: |
| + file_list = [f.LocalPath() for f in change.AffectedFiles()] |
| + |
| if options.upstream_branch: |
| path += '@' + options.upstream_branch |
| - checkouts.append(GuessVCS(options, path)) |
| + file_list = [] |
|
M-A Ruel
2011/10/05 19:03:12
Can you add a comment about why you are doing this
|
| + checkouts.append(GuessVCS(options, path, file_list)) |
| checkouts[0].AutomagicalSettings() |
| for item in options.sub_rep: |
| checkout = GuessVCS(options, os.path.join(checkouts[0].checkout_root, |
| - item)) |
| + item), file_list) |
| if checkout.checkout_root in [c.checkout_root for c in checkouts]: |
| parser.error('Specified the root %s two times.' % |
| checkout.checkout_root) |