|
13 | 13 | // limitations under the License.
|
14 | 14 | package com.googlesource.gerrit.plugins.github.git;
|
15 | 15 |
|
| 16 | +import com.google.common.base.Strings; |
16 | 17 | import com.google.gerrit.extensions.registration.DynamicItem;
|
17 | 18 | import com.google.inject.Inject;
|
18 | 19 | import com.googlesource.gerrit.plugins.github.GitHubURL;
|
@@ -44,23 +45,30 @@ class ReplicationRemoteConfigBuilder {
|
44 | 45 | }
|
45 | 46 |
|
46 | 47 | Config build(String repositoryName) {
|
47 |
| - Config remoteConfig = new Config(); |
| 48 | + Config remoteConfig = replicationConfigItem.get().get(username); |
48 | 49 |
|
49 | 50 | remoteConfig.setString("remote", username, "username", username);
|
50 | 51 | remoteConfig.setString("remote", username, "password", authToken);
|
51 | 52 |
|
52 |
| - remoteConfig.setString("remote", username, "url", gitHubUrl + "/${name}.git"); |
| 53 | + setRemoteConfigIfNotSet(remoteConfig, "url", gitHubUrl + "/${name}.git"); |
53 | 54 |
|
54 | 55 | String[] existingProjects = getProjects();
|
55 | 56 | List<String> projects = new ArrayList<>(List.of(existingProjects));
|
56 | 57 | projects.add(repositoryName);
|
57 | 58 |
|
58 | 59 | remoteConfig.setStringList("remote", username, "projects", projects);
|
59 |
| - remoteConfig.setString("remote", username, "push", "refs/*:refs/*"); |
| 60 | + setRemoteConfigIfNotSet(remoteConfig, "push", "refs/*:refs/*"); |
60 | 61 |
|
61 | 62 | return remoteConfig;
|
62 | 63 | }
|
63 | 64 |
|
| 65 | + private void setRemoteConfigIfNotSet(Config remoteConfig, String key, String value) { |
| 66 | + String existingValue = remoteConfig.getString("remote", username, key); |
| 67 | + if (Strings.isNullOrEmpty(existingValue)) { |
| 68 | + remoteConfig.setString("remote", username, key, value); |
| 69 | + } |
| 70 | + } |
| 71 | + |
64 | 72 | private String[] getProjects() {
|
65 | 73 | ReplicationRemotesApi config = replicationConfigItem.get();
|
66 | 74 | if (config != null) {
|
|
0 commit comments