From 4d5bb68d58f12885ea06fb73d5e17d8c780c9ff8 Mon Sep 17 00:00:00 2001 From: Andrew Wheeler Date: Mon, 27 Feb 2012 13:52:22 -0600 Subject: [PATCH] status: add -q/--quiet option The --quiet option reduces the output to just a list of projects with modified workspaces (and orphans if -o is specified) A common use case is when performing a full-workspace merge. The integrator will kick-off a merge via: repo forall -c git merge And then produce a short list of conflicted projects via: repo status -q The integrator can then iteratively fix and clean up all conficted components. The merge is complete when: repo status -q returns no output. Change-Id: Ibbba8713eac35befd8287c95948874e23fd5c7e2 --- project.py | 8 +++++++- subcmds/status.py | 12 +++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/project.py b/project.py index 142258e4..29638ef7 100644 --- a/project.py +++ b/project.py @@ -911,11 +911,13 @@ class Project(object): else: return False - def PrintWorkTreeStatus(self, output_redir=None): + def PrintWorkTreeStatus(self, output_redir=None, quiet=False): """Prints the status of the repository to stdout. Args: output: If specified, redirect the output to this object. + quiet: If True then only print the project name. Do not print + the modified files, branch name, etc. """ if not os.path.isdir(self.worktree): if output_redir is None: @@ -941,6 +943,10 @@ class Project(object): out.redirect(output_redir) out.project('project %-40s', self.relpath + '/ ') + if quiet: + out.nl() + return 'DIRTY' + branch = self.CurrentBranch if branch is None: out.nobranch('(*** NO BRANCH ***)') diff --git a/subcmds/status.py b/subcmds/status.py index 38c229b1..60e26ff4 100644 --- a/subcmds/status.py +++ b/subcmds/status.py @@ -89,8 +89,10 @@ the following meanings: p.add_option('-o', '--orphans', dest='orphans', action='store_true', help="include objects in working directory outside of repo projects") + p.add_option('-q', '--quiet', action='store_true', + help="only print the name of modified projects") - def _StatusHelper(self, project, clean_counter, sem): + def _StatusHelper(self, project, clean_counter, sem, quiet): """Obtains the status for a specific project. Obtains the status for a project, redirecting the output to @@ -104,7 +106,7 @@ the following meanings: output: Where to output the status. """ try: - state = project.PrintWorkTreeStatus() + state = project.PrintWorkTreeStatus(quiet=quiet) if state == 'CLEAN': next(clean_counter) finally: @@ -132,7 +134,7 @@ the following meanings: if opt.jobs == 1: for project in all_projects: - state = project.PrintWorkTreeStatus() + state = project.PrintWorkTreeStatus(quiet=opt.quiet) if state == 'CLEAN': next(counter) else: @@ -142,13 +144,13 @@ the following meanings: sem.acquire() t = _threading.Thread(target=self._StatusHelper, - args=(project, counter, sem)) + args=(project, counter, sem, opt.quiet)) threads.append(t) t.daemon = True t.start() for t in threads: t.join() - if len(all_projects) == next(counter): + if not opt.quiet and len(all_projects) == next(counter): print('nothing to commit (working directory clean)') if opt.orphans: