Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 """Client-side script to send a try job to the try server. It communicates to | 6 """Client-side script to send a try job to the try server. It communicates to |
| 7 the try server by either writting to a svn repository or by directly connecting | 7 the try server by either writting to a svn repository or by directly connecting |
| 8 to the server by HTTP. | 8 to the server by HTTP. |
| 9 """ | 9 """ |
| 10 | 10 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 settings_file = self.ReadRootFile(self.codereview_settings_file) | 142 settings_file = self.ReadRootFile(self.codereview_settings_file) |
| 143 if settings_file: | 143 if settings_file: |
| 144 for line in settings_file.splitlines(): | 144 for line in settings_file.splitlines(): |
| 145 if not line or line.lstrip().startswith('#'): | 145 if not line or line.lstrip().startswith('#'): |
| 146 continue | 146 continue |
| 147 k, v = line.split(":", 1) | 147 k, v = line.split(":", 1) |
| 148 self.codereview_settings[k.strip()] = v.strip() | 148 self.codereview_settings[k.strip()] = v.strip() |
| 149 return self.codereview_settings.get(key, '') | 149 return self.codereview_settings.get(key, '') |
| 150 | 150 |
| 151 def _GclStyleSettings(self): | 151 def _GclStyleSettings(self): |
| 152 """Set default settings based on the gcl-style settings from the | 152 """Set default settings based on the gcl-style settings from the repository. |
| 153 repository.""" | 153 |
| 154 This method needs to be called after self.top_level_root has been set. | |
|
M-A Ruel
2012/12/19 13:46:12
Add an assert instead?
kjellander_chromium
2012/12/19 16:16:15
Actually I think it's a bit confusing to say it ha
| |
| 155 """ | |
| 154 settings = { | 156 settings = { |
| 155 'port': self.GetCodeReviewSetting('TRYSERVER_HTTP_PORT'), | 157 'port': self.GetCodeReviewSetting('TRYSERVER_HTTP_PORT'), |
| 156 'host': self.GetCodeReviewSetting('TRYSERVER_HTTP_HOST'), | 158 'host': self.GetCodeReviewSetting('TRYSERVER_HTTP_HOST'), |
| 157 'svn_repo': self.GetCodeReviewSetting('TRYSERVER_SVN_URL'), | 159 'svn_repo': self.GetCodeReviewSetting('TRYSERVER_SVN_URL'), |
| 158 'project': self.GetCodeReviewSetting('TRYSERVER_PROJECT'), | 160 'project': self.GetCodeReviewSetting('TRYSERVER_PROJECT'), |
| 159 'root': self.GetCodeReviewSetting('TRYSERVER_ROOT'), | 161 'root': self.GetCodeReviewSetting('TRYSERVER_ROOT'), |
| 160 'patchlevel': self.GetCodeReviewSetting('TRYSERVER_PATCHLEVEL'), | 162 'patchlevel': self.GetCodeReviewSetting('TRYSERVER_PATCHLEVEL'), |
| 161 } | 163 } |
| 162 logging.info('\n'.join(['%s: %s' % (k, v) | 164 logging.info('\n'.join(['%s: %s' % (k, v) |
| 163 for (k, v) in settings.iteritems() if v])) | 165 for (k, v) in settings.iteritems() if v])) |
| 164 for (k, v) in settings.iteritems(): | 166 for (k, v) in settings.iteritems(): |
| 167 # Do not overwrite options already set using command line flags. | |
| 165 if v and getattr(self.options, k) is None: | 168 if v and getattr(self.options, k) is None: |
| 166 setattr(self.options, k, v) | 169 setattr(self.options, k, v) |
| 167 | 170 |
| 168 def AutomagicalSettings(self): | 171 def AutomagicalSettings(self): |
| 169 """Determines settings based on supported code review and checkout tools. | 172 """Determines settings based on supported code review and checkout tools. |
| 170 """ | 173 """ |
| 171 self._GclStyleSettings() | 174 # Try to find gclient or repo root first. |
| 172 # Try to find gclient or repo root. | |
| 173 if not self.options.no_search: | 175 if not self.options.no_search: |
| 174 self.toplevel_root = gclient_utils.FindGclientRoot(self.checkout_root) | 176 self.toplevel_root = gclient_utils.FindGclientRoot(self.checkout_root) |
| 175 if self.toplevel_root: | 177 if self.toplevel_root: |
| 176 logging.info('Found .gclient at %s' % self.toplevel_root) | 178 logging.info('Found .gclient at %s' % self.toplevel_root) |
| 177 else: | 179 else: |
| 178 self.toplevel_root = gclient_utils.FindFileUpwards( | 180 self.toplevel_root = gclient_utils.FindFileUpwards( |
| 179 os.path.join('..', '.repo'), self.checkout_root) | 181 os.path.join('..', '.repo'), self.checkout_root) |
| 180 if self.toplevel_root: | 182 if self.toplevel_root: |
| 181 logging.info('Found .repo dir at %s' | 183 logging.info('Found .repo dir at %s' |
| 182 % os.path.dirname(self.toplevel_root)) | 184 % os.path.dirname(self.toplevel_root)) |
| 183 | 185 |
| 186 # Parse TRYSERVER_* settings from codereview.settings before falling back | |
| 187 # on setting self.options.root manually further down. Otherwise | |
| 188 # TRYSERVER_ROOT would never be used in codereview.settings. | |
| 189 self._GclStyleSettings() | |
| 190 | |
| 184 if self.toplevel_root and not self.options.root: | 191 if self.toplevel_root and not self.options.root: |
| 185 assert os.path.abspath(self.toplevel_root) == self.toplevel_root | 192 assert os.path.abspath(self.toplevel_root) == self.toplevel_root |
| 186 self.options.root = gclient_utils.PathDifference(self.toplevel_root, | 193 self.options.root = gclient_utils.PathDifference(self.toplevel_root, |
| 187 self.checkout_root) | 194 self.checkout_root) |
| 195 else: | |
| 196 self._GclStyleSettings() | |
| 188 | 197 |
| 189 def ReadRootFile(self, filename): | 198 def ReadRootFile(self, filename): |
| 190 cur = self.checkout_root | 199 cur = self.checkout_root |
| 191 root = self.toplevel_root or self.checkout_root | 200 root = self.toplevel_root or self.checkout_root |
| 192 | 201 |
| 193 assert cur.startswith(root), (root, cur) | 202 assert cur.startswith(root), (root, cur) |
| 194 while cur.startswith(root): | 203 while cur.startswith(root): |
| 195 filepath = os.path.join(cur, filename) | 204 filepath = os.path.join(cur, filename) |
| 196 if os.path.isfile(filepath): | 205 if os.path.isfile(filepath): |
| 197 logging.info('Found %s at %s' % (filename, cur)) | 206 logging.info('Found %s at %s' % (filename, cur)) |
| (...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 873 return 1 | 882 return 1 |
| 874 except (gclient_utils.Error, subprocess2.CalledProcessError), e: | 883 except (gclient_utils.Error, subprocess2.CalledProcessError), e: |
| 875 print >> sys.stderr, e | 884 print >> sys.stderr, e |
| 876 return 1 | 885 return 1 |
| 877 return 0 | 886 return 0 |
| 878 | 887 |
| 879 | 888 |
| 880 if __name__ == "__main__": | 889 if __name__ == "__main__": |
| 881 fix_encoding.fix_encoding() | 890 fix_encoding.fix_encoding() |
| 882 sys.exit(TryChange(None, None, False)) | 891 sys.exit(TryChange(None, None, False)) |
| OLD | NEW |