Browse Source

Support hot-reloading of project.mkd

tags/v1.3.0
James Moger 10 years ago
parent
commit
abab3a4e2b
3 changed files with 45 additions and 21 deletions
  1. 6
    0
      build.xml
  2. 12
    0
      src/main/distrib/data/git/project.mkd
  3. 27
    21
      src/main/java/com/gitblit/GitBlit.java

+ 6
- 0
build.xml View File

@@ -976,6 +976,12 @@
<include name="gitblit.properties" />
</fileset>
</copy>
<mkdir dir="@{toDir}/git" />
<copy todir="@{toDir}/git" overwrite="false">
<fileset dir="${project.distrib.dir}/data/git">
<include name="project.mkd" />
</fileset>
</copy>
<mkdir dir="@{toDir}/groovy" />
<copy todir="@{toDir}/groovy">
<fileset dir="${project.distrib.dir}/data/groovy">

+ 12
- 0
src/main/distrib/data/git/project.mkd View File

@@ -0,0 +1,12 @@
This project contains all repositories created directly in the root of *git.repositoriesFolder*.
This message is stored in *git.repositoriesFolder*/**project.mkd**
#### Other Projects
Each project, or repository group, may specify it's own message by defining a **project.mkd** file in the project folder.
<pre>
<i>git.repositoriesFolder</i>/projecta/<b>project.mkd</b>
<i>git.repositoriesFolder</i>/projectb/<b>project.mkd</b>
</pre>

+ 27
- 21
src/main/java/com/gitblit/GitBlit.java View File

@@ -1697,6 +1697,30 @@ public class GitBlit implements ServletContextListener {
return count;
}
private void reloadProjectMarkdown(ProjectModel project) {
// project markdown
File pmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : project.name) + "/project.mkd");
if (pmkd.exists()) {
Date lm = new Date(pmkd.lastModified());
if (!projectMarkdownCache.hasCurrent(project.name, lm)) {
String mkd = com.gitblit.utils.FileUtils.readContent(pmkd, "\n");
projectMarkdownCache.updateObject(project.name, lm, mkd);
}
project.projectMarkdown = projectMarkdownCache.getObject(project.name);
}
// project repositories markdown
File rmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : project.name) + "/repositories.mkd");
if (rmkd.exists()) {
Date lm = new Date(rmkd.lastModified());
if (!projectRepositoriesMarkdownCache.hasCurrent(project.name, lm)) {
String mkd = com.gitblit.utils.FileUtils.readContent(rmkd, "\n");
projectRepositoriesMarkdownCache.updateObject(project.name, lm, mkd);
}
project.repositoriesMarkdown = projectRepositoriesMarkdownCache.getObject(project.name);
}
}
/**
* Returns the map of project config. This map is cached and reloaded if
@@ -1731,27 +1755,7 @@ public class GitBlit implements ServletContextListener {
project.title = projectConfigs.getString("project", name, "title");
project.description = projectConfigs.getString("project", name, "description");
// project markdown
File pmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : name) + "/project.mkd");
if (pmkd.exists()) {
Date lm = new Date(pmkd.lastModified());
if (!projectMarkdownCache.hasCurrent(name, lm)) {
String mkd = com.gitblit.utils.FileUtils.readContent(pmkd, "\n");
projectMarkdownCache.updateObject(name, lm, mkd);
}
project.projectMarkdown = projectMarkdownCache.getObject(name);
}
// project repositories markdown
File rmkd = new File(getRepositoriesFolder(), (project.isRoot ? "" : name) + "/repositories.mkd");
if (rmkd.exists()) {
Date lm = new Date(rmkd.lastModified());
if (!projectRepositoriesMarkdownCache.hasCurrent(name, lm)) {
String mkd = com.gitblit.utils.FileUtils.readContent(rmkd, "\n");
projectRepositoriesMarkdownCache.updateObject(name, lm, mkd);
}
project.repositoriesMarkdown = projectRepositoriesMarkdownCache.getObject(name);
}
reloadProjectMarkdown(project);
configs.put(name.toLowerCase(), project);
}
@@ -1873,6 +1877,8 @@ public class GitBlit implements ServletContextListener {
// no repositories == no project
return null;
}
reloadProjectMarkdown(project);
return project;
}

Loading…
Cancel
Save