James Moger
2013-07-03 abab3a4e2bc221eb358f846f171cb24fc0f687ad
Support hot-reloading of project.mkd
1 files added
2 files modified
66 ■■■■■ changed files
build.xml 6 ●●●●● patch | view | raw | blame | history
src/main/distrib/data/git/project.mkd 12 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/GitBlit.java 48 ●●●●● patch | view | raw | blame | history
build.xml
@@ -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">                    
src/main/distrib/data/git/project.mkd
New 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>
src/main/java/com/gitblit/GitBlit.java
@@ -1697,6 +1697,30 @@
        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 @@
                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 @@
            // no repositories == no project
            return null;
        }
        reloadProjectMarkdown(project);
        return project;
    }