From 9b72a2e674f7cbc320b0b72fc71ad813d296ab12 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 22 Sep 2011 12:04:43 -0400 Subject: [PATCH] Updated to JGit 1.1.0 and reverse-sort library dependencies. --- src/com/gitblit/GitBlit.java | 52 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 7c49969..33eaee9 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -21,6 +21,7 @@ import java.lang.reflect.Field; import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -521,6 +522,8 @@ model.showReadme = getConfig(config, "showReadme", false); model.federationStrategy = FederationStrategy.fromName(getConfig(config, "federationStrategy", null)); + model.federationSets = new ArrayList<String>(Arrays.asList(config.getStringList( + "gitblit", null, "federationSets"))); model.isFederated = getConfig(config, "isFederated", false); model.origin = config.getString("remote", "origin", "url"); } @@ -697,6 +700,7 @@ config.setBoolean("gitblit", null, "showRemoteBranches", repository.showRemoteBranches); config.setBoolean("gitblit", null, "isFrozen", repository.isFrozen); config.setBoolean("gitblit", null, "showReadme", repository.showReadme); + config.setStringList("gitblit", null, "federationSets", repository.federationSets); config.setString("gitblit", null, "federationStrategy", repository.federationStrategy.name()); config.setBoolean("gitblit", null, "isFederated", repository.isFederated); @@ -794,8 +798,8 @@ } public static boolean canFederate() { - String uuid = getString(Keys.federation.uuid, ""); - return !StringUtils.isEmpty(uuid); + String passphrase = getString(Keys.federation.passphrase, ""); + return !StringUtils.isEmpty(passphrase); } /** @@ -803,16 +807,23 @@ * instances. */ private void configureFederation() { - boolean validUuid = true; - String uuid = settings.getString(Keys.federation.uuid, ""); - if (StringUtils.isEmpty(uuid)) { - logger.warn("Federation UUID is blank! This server can not be PULLED from."); - validUuid = false; + boolean validPassphrase = true; + String passphrase = settings.getString(Keys.federation.passphrase, ""); + if (StringUtils.isEmpty(passphrase)) { + logger.warn("Federation passphrase is blank! This server can not be PULLED from."); + validPassphrase = false; } - if (validUuid) { + if (validPassphrase) { + // standard tokens for (FederationToken tokenType : FederationToken.values()) { logger.info(MessageFormat.format("Federation {0} token = {1}", tokenType.name(), getFederationToken(tokenType))); + } + + // federation set tokens + for (String set : settings.getStrings(Keys.federation.sets)) { + logger.info(MessageFormat.format("Federation Set {0} token = {1}", set, + getFederationToken(set))); } } @@ -834,10 +845,11 @@ if (federationRegistrations.isEmpty()) { List<String> keys = settings.getAllKeys(Keys.federation._ROOT); keys.remove(Keys.federation.name); - keys.remove(Keys.federation.uuid); + keys.remove(Keys.federation.passphrase); keys.remove(Keys.federation.allowProposals); keys.remove(Keys.federation.proposalsFolder); keys.remove(Keys.federation.defaultFrequency); + keys.remove(Keys.federation.sets); Collections.sort(keys); Map<String, FederationModel> federatedModels = new HashMap<String, FederationModel>(); for (String key : keys) { @@ -860,6 +872,9 @@ } else if (setting.equals("folder")) { // destination folder of the pull operation federatedModels.get(server).folder = settings.getString(key, ""); + } else if (setting.equals("freeze")) { + // set the repository to read-only after pull + federatedModels.get(server).freeze = settings.getBoolean(key, true); } else if (setting.equals("mergeAccounts")) { // merge remote accounts into local accounts federatedModels.get(server).mergeAccounts = settings.getBoolean(key, false); @@ -933,8 +948,13 @@ */ public List<String> getFederationTokens() { List<String> tokens = new ArrayList<String>(); + // generate standard tokens for (FederationToken type : FederationToken.values()) { tokens.add(getFederationToken(type)); + } + // generate tokens for federation sets + for (String set : settings.getStrings(Keys.federation.sets)) { + tokens.add(getFederationToken(set)); } return tokens; } @@ -946,8 +966,18 @@ * @return a federation token */ public String getFederationToken(FederationToken type) { - String uuid = settings.getString(Keys.federation.uuid, ""); - return StringUtils.getSHA1(uuid + "-" + type.name()); + return getFederationToken(type.name()); + } + + /** + * Returns the specified federation token for this Gitblit instance. + * + * @param value + * @return a federation token + */ + public String getFederationToken(String value) { + String passphrase = settings.getString(Keys.federation.passphrase, ""); + return StringUtils.getSHA1(passphrase + "-" + value); } /** -- Gitblit v1.9.1