From 9122bfc3a80367ed303e8e2d3b3b3d7a8851c904 Mon Sep 17 00:00:00 2001 From: Raman Tenneti Date: Thu, 29 Jul 2021 15:11:23 -0700 Subject: [PATCH] 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 Tested-by: Raman Tenneti --- git_config.py | 1 + tests/fixtures/test.gitconfig | 3 ++- tests/test_git_config.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/git_config.py b/git_config.py index 05d824cb..d882239b 100644 --- a/git_config.py +++ b/git_config.py @@ -798,6 +798,7 @@ class SyncAnalysisState: if value is None: return sync_key = f'{SYNC_STATE_PREFIX}{key}' + sync_key = sync_key.replace('_', '') if isinstance(value, str): self._config.SetString(sync_key, value) elif isinstance(value, bool): diff --git a/tests/fixtures/test.gitconfig b/tests/fixtures/test.gitconfig index e3f51db3..d71f8e73 100644 --- a/tests/fixtures/test.gitconfig +++ b/tests/fixtures/test.gitconfig @@ -12,7 +12,7 @@ intm = 10m intg = 10g [repo "syncstate.main"] - synctime = 2021-07-29T19:18:53.201328Z + synctime = 2021-07-29T22:07:43.463365Z version = 1 [repo "syncstate.sys"] argv = ['/usr/bin/pytest-3'] @@ -20,3 +20,4 @@ test = false [repo "syncstate.options"] verbose = true + mpupdate = false diff --git a/tests/test_git_config.py b/tests/test_git_config.py index 44ff5974..faf12a2e 100644 --- a/tests/test_git_config.py +++ b/tests/test_git_config.py @@ -110,9 +110,11 @@ class GitConfigReadOnlyTests(unittest.TestCase): superproject_logging_data['test'] = False options = type('options', (object,), {})() options.verbose = 'true' + options.mp_update = 'false' TESTS = ( ('superproject.test', 'false'), ('options.verbose', 'true'), + ('options.mpupdate', 'false'), ('main.version', '1'), ) self.config.UpdateSyncAnalysisState(options, superproject_logging_data)