diff options
author | Raman Tenneti <rtenneti@google.com> | 2021-07-29 15:11:23 -0700 |
---|---|---|
committer | Raman Tenneti <rtenneti@google.com> | 2021-07-29 22:41:57 +0000 |
commit | 9122bfc3a80367ed303e8e2d3b3b3d7a8851c904 (patch) | |
tree | e0689e909b33f6c88a8cbade3ac19cebee99aab7 | |
parent | 7954de13b79182e299163307c430ad96f9cdbd38 (diff) | |
download | git-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.py | 1 | ||||
-rw-r--r-- | tests/fixtures/test.gitconfig | 3 | ||||
-rw-r--r-- | tests/test_git_config.py | 2 |
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) |