summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaman Tenneti <rtenneti@google.com>2021-07-29 15:11:23 -0700
committerRaman Tenneti <rtenneti@google.com>2021-07-29 22:41:57 +0000
commit9122bfc3a80367ed303e8e2d3b3b3d7a8851c904 (patch)
treee0689e909b33f6c88a8cbade3ac19cebee99aab7
parent7954de13b79182e299163307c430ad96f9cdbd38 (diff)
downloadgit-repo-9122bfc3a80367ed303e8e2d3b3b3d7a8851c904.tar.gz
sync: Remove '_' from the repo.syncstate.* keys when saved to config.v2.16.4
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>
-rw-r--r--git_config.py1
-rw-r--r--tests/fixtures/test.gitconfig3
-rw-r--r--tests/test_git_config.py2
3 files changed, 5 insertions, 1 deletions
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:
798 if value is None: 798 if value is None:
799 return 799 return
800 sync_key = f'{SYNC_STATE_PREFIX}{key}' 800 sync_key = f'{SYNC_STATE_PREFIX}{key}'
801 sync_key = sync_key.replace('_', '')
801 if isinstance(value, str): 802 if isinstance(value, str):
802 self._config.SetString(sync_key, value) 803 self._config.SetString(sync_key, value)
803 elif isinstance(value, bool): 804 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 @@
12 intm = 10m 12 intm = 10m
13 intg = 10g 13 intg = 10g
14[repo "syncstate.main"] 14[repo "syncstate.main"]
15 synctime = 2021-07-29T19:18:53.201328Z 15 synctime = 2021-07-29T22:07:43.463365Z
16 version = 1 16 version = 1
17[repo "syncstate.sys"] 17[repo "syncstate.sys"]
18 argv = ['/usr/bin/pytest-3'] 18 argv = ['/usr/bin/pytest-3']
@@ -20,3 +20,4 @@
20 test = false 20 test = false
21[repo "syncstate.options"] 21[repo "syncstate.options"]
22 verbose = true 22 verbose = true
23 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):
110 superproject_logging_data['test'] = False 110 superproject_logging_data['test'] = False
111 options = type('options', (object,), {})() 111 options = type('options', (object,), {})()
112 options.verbose = 'true' 112 options.verbose = 'true'
113 options.mp_update = 'false'
113 TESTS = ( 114 TESTS = (
114 ('superproject.test', 'false'), 115 ('superproject.test', 'false'),
115 ('options.verbose', 'true'), 116 ('options.verbose', 'true'),
117 ('options.mpupdate', 'false'),
116 ('main.version', '1'), 118 ('main.version', '1'),
117 ) 119 )
118 self.config.UpdateSyncAnalysisState(options, superproject_logging_data) 120 self.config.UpdateSyncAnalysisState(options, superproject_logging_data)