sync: Remove '_' from the repo.syncstate.* keys when saved to config.

GitConfig doesn't save keys if the keys contain "_" characters. Some
of the options like mp_update, use_superproject have underscores.

This fixes issue with previous_sync_state missing some of the options.

Tested:
$ ./run_tests

$ repo_dev init --use-superproject -u https://android.googlesource.com/platform/manifest

Tested it by running the sync command multiple times and verifing
previous_sync_state and current_sync_state have the same keys.

$ repo_dev sync -j 20
  repo sync has finished successfully

  Verified config file has [syncstate ...] data saved.

Bug: [google internal] b/188573450
Change-Id: I16b52a164f9dd1633d7dad1d8cf6b151c629fcb1
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/313242
Reviewed-by: Xin Li <delphij@google.com>
Tested-by: Raman Tenneti <rtenneti@google.com>
This commit is contained in:
Raman Tenneti 2021-07-29 15:11:23 -07:00
parent 7954de13b7
commit 9122bfc3a8
3 changed files with 5 additions and 1 deletions

View File

@ -798,6 +798,7 @@ class SyncAnalysisState:
if value is None: if value is None:
return return
sync_key = f'{SYNC_STATE_PREFIX}{key}' sync_key = f'{SYNC_STATE_PREFIX}{key}'
sync_key = sync_key.replace('_', '')
if isinstance(value, str): if isinstance(value, str):
self._config.SetString(sync_key, value) self._config.SetString(sync_key, value)
elif isinstance(value, bool): elif isinstance(value, bool):

View File

@ -12,7 +12,7 @@
intm = 10m intm = 10m
intg = 10g intg = 10g
[repo "syncstate.main"] [repo "syncstate.main"]
synctime = 2021-07-29T19:18:53.201328Z synctime = 2021-07-29T22:07:43.463365Z
version = 1 version = 1
[repo "syncstate.sys"] [repo "syncstate.sys"]
argv = ['/usr/bin/pytest-3'] argv = ['/usr/bin/pytest-3']
@ -20,3 +20,4 @@
test = false test = false
[repo "syncstate.options"] [repo "syncstate.options"]
verbose = true verbose = true
mpupdate = false

View File

@ -110,9 +110,11 @@ class GitConfigReadOnlyTests(unittest.TestCase):
superproject_logging_data['test'] = False superproject_logging_data['test'] = False
options = type('options', (object,), {})() options = type('options', (object,), {})()
options.verbose = 'true' options.verbose = 'true'
options.mp_update = 'false'
TESTS = ( TESTS = (
('superproject.test', 'false'), ('superproject.test', 'false'),
('options.verbose', 'true'), ('options.verbose', 'true'),
('options.mpupdate', 'false'),
('main.version', '1'), ('main.version', '1'),
) )
self.config.UpdateSyncAnalysisState(options, superproject_logging_data) self.config.UpdateSyncAnalysisState(options, superproject_logging_data)