From 0ec2029833ffa85400b729dc3b7039661eb42619 Mon Sep 17 00:00:00 2001 From: Xin Li Date: Tue, 14 Sep 2021 16:42:37 -0700 Subject: [PATCH] superproject: Move enrollment to opt-out when enabled globally Our internal experiments was a success so far and we are enrolling 100% users now. Instead of asking every two weeks, simply consider a lack of unexpired choice as accepting the system default. With this change the user would still be able to override the system default with --no-use-superproject, or to permanently set the choice in user's profile with git config --global repo.superprojectchoice. Bug: [google internal] b/190688390 Change-Id: Idc77a9cbf88a169d90304169e91f0d722dc4ac8b Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/317975 Tested-by: Xin Li Reviewed-by: Raman Tenneti --- git_superproject.py | 46 ++++++++++----------------------------------- 1 file changed, 10 insertions(+), 36 deletions(-) diff --git a/git_superproject.py b/git_superproject.py index 1dd5943..935e125 100644 --- a/git_superproject.py +++ b/git_superproject.py @@ -370,7 +370,7 @@ def _UseSuperprojectFromConfiguration(): user_value = user_cfg.GetBoolean('repo.superprojectChoice') if user_value is not None: user_expiration = user_cfg.GetInt('repo.superprojectChoiceExpire') - if user_expiration is not None and (user_expiration <= 0 or user_expiration >= time_now): + if user_expiration is None or user_expiration <= 0 or user_expiration >= time_now: # TODO(b/190688390) - Remove prompt when we are comfortable with the new # default value. if user_value: @@ -388,44 +388,18 @@ def _UseSuperprojectFromConfiguration(): system_value = system_cfg.GetBoolean('repo.superprojectChoice') if system_value: # The system configuration is proposing that we should enable the - # use of superproject. Present this to user for confirmation if we - # are on a TTY, or, when we are not on a TTY, accept the system - # default for this time only. + # use of superproject. Treat the user as enrolled for two weeks. # # TODO(b/190688390) - Remove prompt when we are comfortable with the new # default value. - prompt = ('Repo can now use Git submodules (go/android-submodules-quickstart) ' - 'instead of manifests to represent the state of the Android ' - 'superproject, which results in faster syncs and better atomicity.\n\n') - if sys.stdout.isatty(): - prompt += 'Would you like to opt in for two weeks (y/N)? ' - response = input(prompt).lower() - time_choiceexpire = time_now + (86400 * 14) - if response in ('y', 'yes'): - userchoice = True - elif response in ('a', 'always'): - userchoice = True - time_choiceexpire = 0 - elif response == 'never': - userchoice = False - time_choiceexpire = 0 - elif response in ('n', 'no'): - userchoice = False - else: - # Unrecognized user response, assume the intention was no, but - # only for 2 hours instead of 2 weeks to balance between not - # being overly pushy while still retain the opportunity to - # enroll. - userchoice = False - time_choiceexpire = time_now + 7200 - - user_cfg.SetString('repo.superprojectChoiceExpire', str(time_choiceexpire)) - user_cfg.SetBoolean('repo.superprojectChoice', userchoice) - - return userchoice - else: - print('Accepting once since we are not on a TTY', file=sys.stderr) - return True + userchoice = True + time_choiceexpire = time_now + (86400 * 14) + user_cfg.SetString('repo.superprojectChoiceExpire', str(time_choiceexpire)) + user_cfg.SetBoolean('repo.superprojectChoice', userchoice) + print('You are automatically enrolled in Git submodules experiment ' + '(go/android-submodules-quickstart) for another two weeks.\n', + file=sys.stderr) + return True # For all other cases, we would not use superproject by default. return False