summaryrefslogtreecommitdiffstats
path: root/repo
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2020-02-29 02:53:41 -0500
committerMike Frysinger <vapier@google.com>2020-03-25 04:55:50 +0000
commit3599cc397581086b7fddcd2e07308bfdac7751b1 (patch)
tree5ae663f1830fa7d29ec66c86e2088244f7fa2e5a /repo
parentcfc8111f5e04ece139892bb9af4bd63aac2b75f3 (diff)
downloadgit-repo-3599cc397581086b7fddcd2e07308bfdac7751b1.tar.gz
init: respect --repo-rev changes
We respect this option when running the first `repo init`, but then silently ignore it once the initial sync is done. Make sure users are able to change things on the fly. We refactor the wrapper API to allow reuse between the two init's. Bug: https://crbug.com/gerrit/11045 Change-Id: Icb89a8cddca32f39a760a6283152457810b2392d Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/260032 Tested-by: Mike Frysinger <vapier@google.com> Reviewed-by: Jonathan Nieder <jrn@google.com>
Diffstat (limited to 'repo')
-rwxr-xr-xrepo50
1 files changed, 30 insertions, 20 deletions
diff --git a/repo b/repo
index c78fcacd..66a2a07d 100755
--- a/repo
+++ b/repo
@@ -463,6 +463,34 @@ class CloneFailure(Exception):
463 """ 463 """
464 464
465 465
466def check_repo_verify(repo_verify, quiet=False):
467 """Check the --repo-verify state."""
468 if not repo_verify:
469 print('repo: warning: verification of repo code has been disabled;\n'
470 'repo will not be able to verify the integrity of itself.\n',
471 file=sys.stderr)
472 return False
473
474 if NeedSetupGnuPG():
475 return SetupGnuPG(quiet)
476
477 return True
478
479
480def check_repo_rev(dst, rev, repo_verify=True, quiet=False):
481 """Check that |rev| is valid."""
482 do_verify = check_repo_verify(repo_verify, quiet=quiet)
483 remote_ref, local_rev = resolve_repo_rev(dst, rev)
484 if not quiet and not remote_ref.startswith('refs/heads/'):
485 print('warning: repo is not tracking a remote branch, so it will not '
486 'receive updates', file=sys.stderr)
487 if do_verify:
488 rev = verify_rev(dst, remote_ref, local_rev, quiet)
489 else:
490 rev = local_rev
491 return (remote_ref, rev)
492
493
466def _Init(args, gitc_init=False): 494def _Init(args, gitc_init=False):
467 """Installs repo by cloning it over the network. 495 """Installs repo by cloning it over the network.
468 """ 496 """
@@ -510,30 +538,12 @@ def _Init(args, gitc_init=False):
510 538
511 _CheckGitVersion() 539 _CheckGitVersion()
512 try: 540 try:
513 if not opt.repo_verify:
514 do_verify = False
515 print('repo: warning: verification of repo code has been disabled;\n'
516 'repo will not be able to verify the integrity of itself.\n',
517 file=sys.stderr)
518 else:
519 if NeedSetupGnuPG():
520 do_verify = SetupGnuPG(opt.quiet)
521 else:
522 do_verify = True
523
524 if not opt.quiet: 541 if not opt.quiet:
525 print('Downloading Repo source from', url) 542 print('Downloading Repo source from', url)
526 dst = os.path.abspath(os.path.join(repodir, S_repo)) 543 dst = os.path.abspath(os.path.join(repodir, S_repo))
527 _Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose) 544 _Clone(url, dst, opt.clone_bundle, opt.quiet, opt.verbose)
528 545
529 remote_ref, local_rev = resolve_repo_rev(dst, rev) 546 remote_ref, rev = check_repo_rev(dst, rev, opt.repo_verify, quiet=opt.quiet)
530 if not opt.quiet and not remote_ref.startswith('refs/heads/'):
531 print('warning: repo is not tracking a remote branch, so it will not '
532 'receive updates', file=sys.stderr)
533 if do_verify:
534 rev = _Verify(dst, remote_ref, local_rev, opt.quiet)
535 else:
536 rev = local_rev
537 _Checkout(dst, remote_ref, rev, opt.quiet) 547 _Checkout(dst, remote_ref, rev, opt.quiet)
538 548
539 if not os.path.isfile(os.path.join(dst, 'repo')): 549 if not os.path.isfile(os.path.join(dst, 'repo')):
@@ -907,7 +917,7 @@ def resolve_repo_rev(cwd, committish):
907 raise CloneFailure() 917 raise CloneFailure()
908 918
909 919
910def _Verify(cwd, remote_ref, rev, quiet): 920def verify_rev(cwd, remote_ref, rev, quiet):
911 """Verify the commit has been signed by a tag.""" 921 """Verify the commit has been signed by a tag."""
912 ret = run_git('describe', rev, cwd=cwd) 922 ret = run_git('describe', rev, cwd=cwd)
913 cur = ret.stdout.strip() 923 cur = ret.stdout.strip()