diff --git a/gclient.py b/gclient.py index 96175aa17..deedf17d8 100755 --- a/gclient.py +++ b/gclient.py @@ -892,7 +892,6 @@ def DoCleanup(options, args): # Print out the .gclient file. This is longer than if we just printed the # client dict, but more legible, and it might contain helpful comments. print(client.ConfigContent()) - options.verbose = True return client.RunOnDeps('cleanup', args) @@ -971,7 +970,6 @@ def DoPack(options, args): # Print out the .gclient file. This is longer than if we just printed the # client dict, but more legible, and it might contain helpful comments. print(client.ConfigContent()) - options.verbose = True return client.RunOnDeps('pack', args) @@ -988,7 +986,6 @@ def DoStatus(options, args): # Print out the .gclient file. This is longer than if we just printed the # client dict, but more legible, and it might contain helpful comments. print(client.ConfigContent()) - options.verbose = True return client.RunOnDeps('status', args) @@ -1043,7 +1040,6 @@ def DoDiff(options, args): # Print out the .gclient file. This is longer than if we just printed the # client dict, but more legible, and it might contain helpful comments. print(client.ConfigContent()) - options.verbose = True return client.RunOnDeps('diff', args) diff --git a/gclient_scm.py b/gclient_scm.py index fba971cea..f1894262b 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -251,7 +251,7 @@ class SVNWrapper(SCMWrapper): command = ['checkout', url, checkout_path] if revision: command.extend(['--revision', str(revision)]) - RunSVNAndGetFileList(command, self._root_dir, file_list) + RunSVNAndGetFileList(options, command, self._root_dir, file_list) return # Get the existing scm url and the revision number of the current checkout. @@ -309,7 +309,7 @@ class SVNWrapper(SCMWrapper): command = ['checkout', url, checkout_path] if revision: command.extend(['--revision', str(revision)]) - RunSVNAndGetFileList(command, self._root_dir, file_list) + RunSVNAndGetFileList(options, command, self._root_dir, file_list) return @@ -323,7 +323,7 @@ class SVNWrapper(SCMWrapper): command = ["update", checkout_path] if revision: command.extend(['--revision', str(revision)]) - RunSVNAndGetFileList(command, self._root_dir, file_list) + RunSVNAndGetFileList(options, command, self._root_dir, file_list) def revert(self, options, args, file_list): """Reverts local modifications. Subversion specific. @@ -374,7 +374,7 @@ class SVNWrapper(SCMWrapper): try: # svn revert is so broken we don't even use it. Using # "svn up --revision BASE" achieve the same effect. - RunSVNAndGetFileList(['update', '--revision', 'BASE'], path, + RunSVNAndGetFileList(options, ['update', '--revision', 'BASE'], path, file_list) except OSError, e: # Maybe the directory disapeared meanwhile. We don't want it to throw an @@ -396,7 +396,7 @@ class SVNWrapper(SCMWrapper): % (' '.join(command), path)) # There's no file list to retrieve. else: - RunSVNAndGetFileList(command, path, file_list) + RunSVNAndGetFileList(options, command, path, file_list) def pack(self, options, args, file_list): """Generates a patch file which can be applied to the root of the @@ -546,7 +546,7 @@ def CaptureSVN(args, in_directory=None, print_error=True): stderr=stderr).communicate()[0] -def RunSVNAndGetFileList(args, in_directory, file_list): +def RunSVNAndGetFileList(options, args, in_directory, file_list): """Runs svn checkout, update, or status, output to stdout. The first item in args must be either "checkout", "update", or "status". @@ -556,6 +556,7 @@ def RunSVNAndGetFileList(args, in_directory, file_list): sys.stdout as in RunSVN. Args: + options: command line options to gclient args: A sequence of command line parameters to be passed to svn. in_directory: The directory where svn is to be run. @@ -595,7 +596,7 @@ def RunSVNAndGetFileList(args, in_directory, file_list): RunSVNAndFilterOutput(args, in_directory, - True, + options.verbose, True, CaptureMatchingLines) diff --git a/gclient_utils.py b/gclient_utils.py index 464419fb0..8b4eeb2b5 100644 --- a/gclient_utils.py +++ b/gclient_utils.py @@ -183,8 +183,13 @@ def SubprocessCallAndFilter(command, """Runs command, a list, in directory in_directory. If print_messages is true, a message indicating what is being done - is printed to stdout. If print_stdout is true, the command's stdout - is also forwarded to stdout. + is printed to stdout. If print_messages is false, the message is printed + only if we actually need to print something else as well, so you can + get the context of the output. If print_messages is false and print_stdout + is false, no output at all is generated. + + Also, if print_stdout is true, the command's stdout is also forwarded + to stdout. If a filter function is specified, it is expected to take a single string argument, and it will be called with each line of the @@ -216,6 +221,10 @@ def SubprocessCallAndFilter(command, if in_byte != "\r": if print_stdout: sys.stdout.write(in_byte) + if not print_messages: + print("\n________ running \'%s\' in \'%s\'" + % (' '.join(command), in_directory)) + print_messages = True if in_byte != "\n": in_line += in_byte if in_byte == "\n" and filter: diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py index 5ffa7b5e9..6f5cc0411 100644 --- a/tests/gclient_scm_test.py +++ b/tests/gclient_scm_test.py @@ -96,7 +96,7 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): # Checkout. gclient.os.path.exists(base_path).AndReturn(False) files_list = self.mox.CreateMockAnything() - gclient_scm.RunSVNAndGetFileList(['checkout', self.url, base_path], + gclient_scm.RunSVNAndGetFileList(options, ['checkout', self.url, base_path], self.root_dir, files_list) self.mox.ReplayAll() @@ -109,7 +109,7 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): base_path = os.path.join(self.root_dir, self.relpath) gclient.os.path.isdir(base_path).AndReturn(True) gclient_scm.CaptureSVNStatus(base_path).AndReturn([]) - gclient_scm.RunSVNAndGetFileList(['update', '--revision', 'BASE'], + gclient_scm.RunSVNAndGetFileList(options, ['update', '--revision', 'BASE'], base_path, mox.IgnoreArg()) self.mox.ReplayAll() @@ -135,7 +135,7 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): gclient_scm.os.path.exists(file_path2).AndReturn(True) gclient_scm.os.path.isfile(file_path2).AndReturn(True) gclient_scm.os.remove(file_path2) - gclient_scm.RunSVNAndGetFileList(['update', '--revision', 'BASE'], + gclient_scm.RunSVNAndGetFileList(options, ['update', '--revision', 'BASE'], base_path, mox.IgnoreArg()) print(os.path.join(base_path, 'a')) print(os.path.join(base_path, 'b')) @@ -161,7 +161,7 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): gclient_scm.os.path.isdir(file_path).AndReturn(True) gclient_utils.RemoveDirectory(file_path) file_list1 = [] - gclient_scm.RunSVNAndGetFileList(['update', '--revision', 'BASE'], + gclient_scm.RunSVNAndGetFileList(options, ['update', '--revision', 'BASE'], base_path, mox.IgnoreArg()) self.mox.ReplayAll() @@ -174,8 +174,8 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): options = self.Options(verbose=True) base_path = os.path.join(self.root_dir, self.relpath) gclient.os.path.isdir(base_path).AndReturn(True) - gclient_scm.RunSVNAndGetFileList(['status'] + self.args, base_path, - []).AndReturn(None) + gclient_scm.RunSVNAndGetFileList(options, ['status'] + self.args, + base_path, []).AndReturn(None) self.mox.ReplayAll() scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, @@ -198,8 +198,8 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): # Checkout. gclient.os.path.exists(base_path).AndReturn(False) files_list = self.mox.CreateMockAnything() - gclient_scm.RunSVNAndGetFileList(['checkout', self.url, base_path], - self.root_dir, files_list) + gclient_scm.RunSVNAndGetFileList(options, ['checkout', self.url, + base_path], self.root_dir, files_list) self.mox.ReplayAll() scm = self._scm_wrapper(url=self.url, root_dir=self.root_dir, relpath=self.relpath) @@ -227,7 +227,8 @@ class SVNWrapperTestCase(gclient_test.GClientBaseTestCase): if options.manually_grab_svn_rev: additional_args = ['--revision', str(file_info['Revision'])] files_list = [] - gclient_scm.RunSVNAndGetFileList(['update', base_path] + additional_args, + gclient_scm.RunSVNAndGetFileList(options, + ['update', base_path] + additional_args, self.root_dir, files_list) self.mox.ReplayAll()