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