repo/init: add --verbose flags

We don't use these for much yet, but init passes it down to the
project sync layers which already has support for verbose mode.

Change-Id: I651794f1b300be1688eeccf3941ba92c776812b5
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256454
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Jonathan Nieder <jrn@google.com>
diff --git a/repo b/repo
index 32ad4cb..25ed328 100755
--- a/repo
+++ b/repo
@@ -265,9 +265,12 @@
 
   # Logging.
   group = parser.add_option_group('Logging options')
+  group.add_option('-v', '--verbose',
+                   dest='output_mode', action='store_true',
+                   help='show all output')
   group.add_option('-q', '--quiet',
-                   action='store_true', default=False,
-                   help='be quiet')
+                   dest='output_mode', action='store_false',
+                   help='only show errors')
 
   # Manifest.
   group = parser.add_option_group('Manifest options')
@@ -468,6 +471,8 @@
   if args:
     parser.print_usage()
     sys.exit(1)
+  opt.quiet = opt.output_mode is False
+  opt.verbose = opt.output_mode is True
 
   url = opt.repo_url
   if not url:
@@ -527,7 +532,7 @@
         do_verify = True
 
     dst = os.path.abspath(os.path.join(repodir, S_repo))
-    _Clone(url, dst, opt.quiet, opt.clone_bundle)
+    _Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose)
 
     if do_verify:
       rev = _Verify(dst, branch, opt.quiet)
@@ -746,7 +751,7 @@
   urllib.request.install_opener(urllib.request.build_opener(*handlers))
 
 
-def _Fetch(url, cwd, src, quiet):
+def _Fetch(url, cwd, src, quiet, verbose):
   if not quiet:
     print('Get %s' % url, file=sys.stderr)
 
@@ -762,7 +767,7 @@
   run_git(*cmd, stderr=err, cwd=cwd)
 
 
-def _DownloadBundle(url, cwd, quiet):
+def _DownloadBundle(url, cwd, quiet, verbose):
   if not url.endswith('/'):
     url += '/'
   url += 'clone.bundle'
@@ -812,12 +817,12 @@
 def _ImportBundle(cwd):
   path = os.path.join(cwd, '.git', 'clone.bundle')
   try:
-    _Fetch(cwd, cwd, path, True)
+    _Fetch(cwd, cwd, path, True, False)
   finally:
     os.remove(path)
 
 
-def _Clone(url, cwd, quiet, clone_bundle):
+def _Clone(url, cwd, clone_bundle, quiet, verbose):
   """Clones a git repository to a new subdirectory of repodir
   """
   try:
@@ -834,9 +839,9 @@
   _SetConfig(cwd,
              'remote.origin.fetch',
              '+refs/heads/*:refs/remotes/origin/*')
-  if clone_bundle and _DownloadBundle(url, cwd, quiet):
+  if clone_bundle and _DownloadBundle(url, cwd, quiet, verbose):
     _ImportBundle(cwd)
-  _Fetch(url, cwd, 'origin', quiet)
+  _Fetch(url, cwd, 'origin', quiet, verbose)
 
 
 def _Verify(cwd, branch, quiet):
diff --git a/subcmds/init.py b/subcmds/init.py
index af5bc29..be73cec 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -87,9 +87,12 @@
   def _Options(self, p, gitc_init=False):
     # Logging
     g = p.add_option_group('Logging options')
+    g.add_option('-v', '--verbose',
+                 dest='output_mode', action='store_true',
+                 help='show all output')
     g.add_option('-q', '--quiet',
-                 dest="quiet", action="store_true", default=False,
-                 help="be quiet")
+                 dest='output_mode', action='store_false',
+                 help='only show errors')
 
     # Manifest
     g = p.add_option_group('Manifest options')
@@ -300,7 +303,7 @@
     if opt.submodules:
       m.config.SetString('repo.submodules', 'true')
 
-    if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet,
+    if not m.Sync_NetworkHalf(is_new=is_new, quiet=opt.quiet, verbose=opt.verbose,
                               clone_bundle=opt.clone_bundle,
                               current_branch_only=opt.current_branch_only,
                               tags=opt.tags, submodules=opt.submodules,
@@ -483,6 +486,9 @@
             % ('.'.join(str(x) for x in MIN_GIT_VERSION_SOFT),),
             file=sys.stderr)
 
+    opt.quiet = opt.output_mode is False
+    opt.verbose = opt.output_mode is True
+
     if opt.worktree:
       # Older versions of git supported worktree, but had dangerous gc bugs.
       git_require((2, 15, 0), fail=True, msg='git gc worktree corruption')