summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-06-28 10:20:00 -0400
committerJames Moger <james.moger@gitblit.com>2013-06-28 10:20:00 -0400
commit676b72cdc1a4ee3896c59eb64324cf6d15b9bce8 (patch)
tree96d163cfa076a56accec23bc8760a3cb5bfbc8ba /src/main/java/com/gitblit
parent9dd49f05ea7ceab4d4dd346545993d94d4f3a21e (diff)
downloadgitblit-676b72cdc1a4ee3896c59eb64324cf6d15b9bce8.tar.gz
gitblit-676b72cdc1a4ee3896c59eb64324cf6d15b9bce8.zip
Track fork's originRepository instead of parsing origin url (issue 190)
Diffstat (limited to 'src/main/java/com/gitblit')
-rw-r--r--src/main/java/com/gitblit/GitBlit.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index bcfebb53..1f9a9472 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -1948,6 +1948,7 @@ public class GitBlit implements ServletContextListener {
if (config != null) {
model.description = getConfig(config, "description", "");
+ model.originRepository = getConfig(config, "originRepository", null);
model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
model.useTickets = getConfig(config, "useTickets", false);
model.useDocs = getConfig(config, "useDocs", false);
@@ -2003,7 +2004,7 @@ public class GitBlit implements ServletContextListener {
model.sparkleshareId = JGitUtils.getSparkleshareId(r);
r.close();
- if (model.origin != null && model.origin.startsWith("file://")) {
+ if (StringUtils.isEmpty(model.originRepository) && model.origin != null && model.origin.startsWith("file://")) {
// repository was cloned locally... perhaps as a fork
try {
File folder = new File(new URI(model.origin));
@@ -2412,6 +2413,7 @@ public class GitBlit implements ServletContextListener {
String origin = config.getString("remote", "origin", "url");
origin = origin.replace(repositoryName, repository.name);
config.setString("remote", "origin", "url", origin);
+ config.setString(Constants.CONFIG_GITBLIT, null, "originRepository", repository.name);
config.save();
} catch (Exception e) {
logger.error("Failed to update repository fork config for " + fork, e);
@@ -2420,11 +2422,12 @@ public class GitBlit implements ServletContextListener {
}
}
- // remove this repository from any origin model's fork list
+ // update this repository's origin's fork list
if (!StringUtils.isEmpty(repository.originRepository)) {
RepositoryModel origin = repositoryListCache.get(repository.originRepository);
if (origin != null && !ArrayUtils.isEmpty(origin.forks)) {
origin.forks.remove(repositoryName);
+ origin.forks.add(repository.name);
}
}
@@ -2473,6 +2476,7 @@ public class GitBlit implements ServletContextListener {
public void updateConfiguration(Repository r, RepositoryModel repository) {
StoredConfig config = r.getConfig();
config.setString(Constants.CONFIG_GITBLIT, null, "description", repository.description);
+ config.setString(Constants.CONFIG_GITBLIT, null, "originRepository", repository.originRepository);
config.setString(Constants.CONFIG_GITBLIT, null, "owner", ArrayUtils.toString(repository.owners));
config.setBoolean(Constants.CONFIG_GITBLIT, null, "useTickets", repository.useTickets);
config.setBoolean(Constants.CONFIG_GITBLIT, null, "useDocs", repository.useDocs);