diff --git a/checkout.py b/checkout.py index da2d86f73a..a303b338ac 100644 --- a/checkout.py +++ b/checkout.py @@ -22,13 +22,6 @@ import scm import subprocess2 -# Default timeout of 15 minutes. -GLOBAL_TIMEOUT = 15*60 -# Use a larger timeout for checkout since it can be a genuinely slower -# operation. -FETCH_TIMEOUT = 30*60 - - def get_code_review_setting(path, key, codereview_settings_file='codereview.settings'): """Parses codereview.settings and return the value for the key if present. @@ -204,8 +197,7 @@ class RawCheckout(CheckoutBase): cmd, stdin=p.get(False), stderr=subprocess2.STDOUT, - cwd=self.project_path, - timeout=GLOBAL_TIMEOUT)) + cwd=self.project_path)) elif p.is_new and not os.path.exists(filepath): # There is only a header. Just create the file. open(filepath, 'w').close() @@ -284,10 +276,8 @@ class SvnMixIn(object): """Runs svn and throws an exception if the command failed.""" kwargs.setdefault('cwd', self.project_path) kwargs.setdefault('stdout', self.VOID) - kwargs.setdefault('timeout', GLOBAL_TIMEOUT) return subprocess2.check_call_out( - self._add_svn_flags(args, False), - **kwargs) + self._add_svn_flags(args, False), **kwargs) def _check_output_svn(self, args, credentials=True, **kwargs): """Runs svn and throws an exception if the command failed. @@ -298,7 +288,6 @@ class SvnMixIn(object): return subprocess2.check_output( self._add_svn_flags(args, True, credentials), stderr=subprocess2.STDOUT, - timeout=GLOBAL_TIMEOUT, **kwargs) @staticmethod @@ -398,10 +387,7 @@ class SvnCheckout(CheckoutBase, SvnMixIn): ] stdout.append( subprocess2.check_output( - cmd, - stdin=p.get(False), - cwd=self.project_path, - timeout=GLOBAL_TIMEOUT)) + cmd, stdin=p.get(False), cwd=self.project_path)) elif p.is_new and not os.path.exists(filepath): # There is only a header. Just create the file if it doesn't # exist. @@ -497,14 +483,11 @@ class SvnCheckout(CheckoutBase, SvnMixIn): logging.info( 'Directory %s is not present, checking it out.' % self.project_path) self._check_call_svn( - ['checkout', self.svn_url, self.project_path] + flags, - cwd=None, - timeout=FETCH_TIMEOUT) + ['checkout', self.svn_url, self.project_path] + flags, cwd=None) else: - # TODO(maruel): This command will shell out without a timeout. scm.SVN.Revert(self.project_path, no_ignore=True) # Revive files that were deleted in scm.SVN.Revert(). - self._check_call_svn(['update', '--force'] + flags, timeout=FETCH_TIMEOUT) + self._check_call_svn(['update', '--force'] + flags) return self._get_revision() def _get_revision(self): @@ -554,7 +537,8 @@ class GitCheckoutBase(CheckoutBase): try: revision = self._check_output_git(['rev-parse', revision]) except subprocess.CalledProcessError: - self._fetch_remote() + self._check_call_git( + ['fetch', self.remote, self.remote_branch, '--quiet']) revision = self._check_output_git(['rev-parse', revision]) self._check_call_git(['checkout', '--force', '--quiet', revision]) else: @@ -665,23 +649,18 @@ class GitCheckoutBase(CheckoutBase): def _check_call_git(self, args, **kwargs): kwargs.setdefault('cwd', self.project_path) kwargs.setdefault('stdout', self.VOID) - kwargs.setdefault('timeout', GLOBAL_TIMEOUT) - return subprocess2.check_call_out( - ['git'] + args, **kwargs) + return subprocess2.check_call_out(['git'] + args, **kwargs) def _call_git(self, args, **kwargs): """Like check_call but doesn't throw on failure.""" kwargs.setdefault('cwd', self.project_path) kwargs.setdefault('stdout', self.VOID) - return subprocess2.call(['git'] + args, timeout=GLOBAL_TIMEOUT, **kwargs) + return subprocess2.call(['git'] + args, **kwargs) def _check_output_git(self, args, **kwargs): kwargs.setdefault('cwd', self.project_path) return subprocess2.check_output( - ['git'] + args, - stderr=subprocess2.STDOUT, - timeout=GLOBAL_TIMEOUT, - **kwargs) + ['git'] + args, stderr=subprocess2.STDOUT, **kwargs) def _branches(self): """Returns the list of branches and the active one.""" @@ -716,9 +695,7 @@ class GitCheckout(GitCheckoutBase): """Git checkout implementation.""" def _fetch_remote(self): # git fetch is always verbose even with -q -q so redirect its output. - self._check_call_git( - ['fetch', self.remote, self.remote_branch, '--quiet'], - timeout=FETCH_TIMEOUT) + self._check_output_git(['fetch', self.remote, self.remote_branch]) class ReadOnlyCheckout(object):