mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
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 <some tag> 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
This commit is contained in:
parent
82f67987a3
commit
4d5bb68d58
@ -911,11 +911,13 @@ class Project(object):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def PrintWorkTreeStatus(self, output_redir=None):
|
def PrintWorkTreeStatus(self, output_redir=None, quiet=False):
|
||||||
"""Prints the status of the repository to stdout.
|
"""Prints the status of the repository to stdout.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
output: If specified, redirect the output to this object.
|
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 not os.path.isdir(self.worktree):
|
||||||
if output_redir is None:
|
if output_redir is None:
|
||||||
@ -941,6 +943,10 @@ class Project(object):
|
|||||||
out.redirect(output_redir)
|
out.redirect(output_redir)
|
||||||
out.project('project %-40s', self.relpath + '/ ')
|
out.project('project %-40s', self.relpath + '/ ')
|
||||||
|
|
||||||
|
if quiet:
|
||||||
|
out.nl()
|
||||||
|
return 'DIRTY'
|
||||||
|
|
||||||
branch = self.CurrentBranch
|
branch = self.CurrentBranch
|
||||||
if branch is None:
|
if branch is None:
|
||||||
out.nobranch('(*** NO BRANCH ***)')
|
out.nobranch('(*** NO BRANCH ***)')
|
||||||
|
@ -89,8 +89,10 @@ the following meanings:
|
|||||||
p.add_option('-o', '--orphans',
|
p.add_option('-o', '--orphans',
|
||||||
dest='orphans', action='store_true',
|
dest='orphans', action='store_true',
|
||||||
help="include objects in working directory outside of repo projects")
|
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 specific project.
|
||||||
|
|
||||||
Obtains the status for a project, redirecting the output to
|
Obtains the status for a project, redirecting the output to
|
||||||
@ -104,7 +106,7 @@ the following meanings:
|
|||||||
output: Where to output the status.
|
output: Where to output the status.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
state = project.PrintWorkTreeStatus()
|
state = project.PrintWorkTreeStatus(quiet=quiet)
|
||||||
if state == 'CLEAN':
|
if state == 'CLEAN':
|
||||||
next(clean_counter)
|
next(clean_counter)
|
||||||
finally:
|
finally:
|
||||||
@ -132,7 +134,7 @@ the following meanings:
|
|||||||
|
|
||||||
if opt.jobs == 1:
|
if opt.jobs == 1:
|
||||||
for project in all_projects:
|
for project in all_projects:
|
||||||
state = project.PrintWorkTreeStatus()
|
state = project.PrintWorkTreeStatus(quiet=opt.quiet)
|
||||||
if state == 'CLEAN':
|
if state == 'CLEAN':
|
||||||
next(counter)
|
next(counter)
|
||||||
else:
|
else:
|
||||||
@ -142,13 +144,13 @@ the following meanings:
|
|||||||
sem.acquire()
|
sem.acquire()
|
||||||
|
|
||||||
t = _threading.Thread(target=self._StatusHelper,
|
t = _threading.Thread(target=self._StatusHelper,
|
||||||
args=(project, counter, sem))
|
args=(project, counter, sem, opt.quiet))
|
||||||
threads.append(t)
|
threads.append(t)
|
||||||
t.daemon = True
|
t.daemon = True
|
||||||
t.start()
|
t.start()
|
||||||
for t in threads:
|
for t in threads:
|
||||||
t.join()
|
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)')
|
print('nothing to commit (working directory clean)')
|
||||||
|
|
||||||
if opt.orphans:
|
if opt.orphans:
|
||||||
|
Loading…
Reference in New Issue
Block a user