mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
sync: capture all git output by default
The default sync output should show a progress bar only for successful commands, and the error output for any commands that fail. Implement that policy here. Bug: https://crbug.com/gerrit/11293 Change-Id: I85716032201b6e2b45df876b07dd79cb2c1447a5 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/297905 Reviewed-by: Michael Mortensen <mmortensen@google.com> Tested-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
parent
fbb95a4342
commit
7b586f231b
21
project.py
21
project.py
@ -1039,6 +1039,7 @@ class Project(object):
|
|||||||
def Sync_NetworkHalf(self,
|
def Sync_NetworkHalf(self,
|
||||||
quiet=False,
|
quiet=False,
|
||||||
verbose=False,
|
verbose=False,
|
||||||
|
output_redir=None,
|
||||||
is_new=None,
|
is_new=None,
|
||||||
current_branch_only=False,
|
current_branch_only=False,
|
||||||
force_sync=False,
|
force_sync=False,
|
||||||
@ -1126,8 +1127,9 @@ class Project(object):
|
|||||||
(ID_RE.match(self.revisionExpr) and
|
(ID_RE.match(self.revisionExpr) and
|
||||||
self._CheckForImmutableRevision())):
|
self._CheckForImmutableRevision())):
|
||||||
if not self._RemoteFetch(
|
if not self._RemoteFetch(
|
||||||
initial=is_new, quiet=quiet, verbose=verbose, alt_dir=alt_dir,
|
initial=is_new,
|
||||||
current_branch_only=current_branch_only,
|
quiet=quiet, verbose=verbose, output_redir=output_redir,
|
||||||
|
alt_dir=alt_dir, current_branch_only=current_branch_only,
|
||||||
tags=tags, prune=prune, depth=depth,
|
tags=tags, prune=prune, depth=depth,
|
||||||
submodules=submodules, force_sync=force_sync,
|
submodules=submodules, force_sync=force_sync,
|
||||||
clone_filter=clone_filter, retry_fetches=retry_fetches):
|
clone_filter=clone_filter, retry_fetches=retry_fetches):
|
||||||
@ -1139,7 +1141,11 @@ class Project(object):
|
|||||||
alternates_file = os.path.join(self.gitdir, 'objects/info/alternates')
|
alternates_file = os.path.join(self.gitdir, 'objects/info/alternates')
|
||||||
if os.path.exists(alternates_file):
|
if os.path.exists(alternates_file):
|
||||||
cmd = ['repack', '-a', '-d']
|
cmd = ['repack', '-a', '-d']
|
||||||
if GitCommand(self, cmd, bare=True).Wait() != 0:
|
p = GitCommand(self, cmd, bare=True, capture_stdout=bool(output_redir),
|
||||||
|
merge_output=bool(output_redir))
|
||||||
|
if p.stdout and output_redir:
|
||||||
|
buf.write(p.stdout)
|
||||||
|
if p.Wait() != 0:
|
||||||
return False
|
return False
|
||||||
platform_utils.remove(alternates_file)
|
platform_utils.remove(alternates_file)
|
||||||
|
|
||||||
@ -1951,6 +1957,7 @@ class Project(object):
|
|||||||
initial=False,
|
initial=False,
|
||||||
quiet=False,
|
quiet=False,
|
||||||
verbose=False,
|
verbose=False,
|
||||||
|
output_redir=None,
|
||||||
alt_dir=None,
|
alt_dir=None,
|
||||||
tags=True,
|
tags=True,
|
||||||
prune=False,
|
prune=False,
|
||||||
@ -2128,7 +2135,9 @@ class Project(object):
|
|||||||
ok = prune_tried = False
|
ok = prune_tried = False
|
||||||
for try_n in range(retry_fetches):
|
for try_n in range(retry_fetches):
|
||||||
gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy,
|
gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy,
|
||||||
merge_output=True, capture_stdout=quiet)
|
merge_output=True, capture_stdout=quiet or bool(output_redir))
|
||||||
|
if gitcmd.stdout and not quiet and output_redir:
|
||||||
|
output_redir.write(gitcmd.stdout)
|
||||||
ret = gitcmd.Wait()
|
ret = gitcmd.Wait()
|
||||||
if ret == 0:
|
if ret == 0:
|
||||||
ok = True
|
ok = True
|
||||||
@ -2170,7 +2179,7 @@ class Project(object):
|
|||||||
# Git died with a signal, exit immediately
|
# Git died with a signal, exit immediately
|
||||||
break
|
break
|
||||||
if not verbose:
|
if not verbose:
|
||||||
print('%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
|
print('\n%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
|
||||||
time.sleep(random.randint(30, 45))
|
time.sleep(random.randint(30, 45))
|
||||||
|
|
||||||
if initial:
|
if initial:
|
||||||
@ -2189,7 +2198,7 @@ class Project(object):
|
|||||||
# Sync the current branch only with depth set to None.
|
# Sync the current branch only with depth set to None.
|
||||||
# We always pass depth=None down to avoid infinite recursion.
|
# We always pass depth=None down to avoid infinite recursion.
|
||||||
return self._RemoteFetch(
|
return self._RemoteFetch(
|
||||||
name=name, quiet=quiet, verbose=verbose,
|
name=name, quiet=quiet, verbose=verbose, output_redir=output_redir,
|
||||||
current_branch_only=current_branch_only and depth,
|
current_branch_only=current_branch_only and depth,
|
||||||
initial=False, alt_dir=alt_dir,
|
initial=False, alt_dir=alt_dir,
|
||||||
depth=None, clone_filter=clone_filter)
|
depth=None, clone_filter=clone_filter)
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import http.cookiejar as cookielib
|
import http.cookiejar as cookielib
|
||||||
|
import io
|
||||||
import json
|
import json
|
||||||
import netrc
|
import netrc
|
||||||
from optparse import SUPPRESS_HELP
|
from optparse import SUPPRESS_HELP
|
||||||
@ -354,6 +355,7 @@ later is required to fix a server side protocol bug.
|
|||||||
# - We always make sure we unlock the lock if we locked it.
|
# - We always make sure we unlock the lock if we locked it.
|
||||||
start = time.time()
|
start = time.time()
|
||||||
success = False
|
success = False
|
||||||
|
buf = io.StringIO()
|
||||||
with lock:
|
with lock:
|
||||||
pm.start(project.name)
|
pm.start(project.name)
|
||||||
try:
|
try:
|
||||||
@ -361,6 +363,7 @@ later is required to fix a server side protocol bug.
|
|||||||
success = project.Sync_NetworkHalf(
|
success = project.Sync_NetworkHalf(
|
||||||
quiet=opt.quiet,
|
quiet=opt.quiet,
|
||||||
verbose=opt.verbose,
|
verbose=opt.verbose,
|
||||||
|
output_redir=buf,
|
||||||
current_branch_only=opt.current_branch_only,
|
current_branch_only=opt.current_branch_only,
|
||||||
force_sync=opt.force_sync,
|
force_sync=opt.force_sync,
|
||||||
clone_bundle=opt.clone_bundle,
|
clone_bundle=opt.clone_bundle,
|
||||||
@ -376,6 +379,10 @@ later is required to fix a server side protocol bug.
|
|||||||
lock.acquire()
|
lock.acquire()
|
||||||
did_lock = True
|
did_lock = True
|
||||||
|
|
||||||
|
output = buf.getvalue()
|
||||||
|
if opt.verbose and output:
|
||||||
|
pm.update(inc=0, msg=output.rstrip())
|
||||||
|
|
||||||
if not success:
|
if not success:
|
||||||
err_event.set()
|
err_event.set()
|
||||||
print('error: Cannot fetch %s from %s'
|
print('error: Cannot fetch %s from %s'
|
||||||
|
Loading…
Reference in New Issue
Block a user