James Moger
2013-03-29 e5c14e6d7e24bbf6807a65e56560a13e7bd7eca3
Fixed NPE in FedClient and support --baseFolder in FedClient (issue-219)
5 files modified
28 ■■■■ changed files
build.moxie 2 ●●● patch | view | raw | blame | history
releases.moxie 2 ●●●●● patch | view | raw | blame | history
src/main/distrib/federation.properties 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/FederationClient.java 20 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/FederationPullExecutor.java 2 ●●● patch | view | raw | blame | history
build.moxie
@@ -121,7 +121,7 @@
# Standard dependencies
- compile 'com.beust:jcommander:1.17' :fedclient :authority
- compile 'log4j:log4j:1.2.17' :war :fedclient :authority
- compile 'org.slf4j:slf4j-api:1.6.6' :war fedclient :authority
- compile 'org.slf4j:slf4j-api:1.6.6' :war :fedclient :authority
- compile 'org.slf4j:slf4j-log4j12:1.6.6' :war :fedclient :authority
- compile 'javax.mail:mail:1.4.3' :war :fedclient :authority
- compile 'javax.servlet:javax.servlet-api:3.0.1' :fedclient
releases.moxie
@@ -14,11 +14,13 @@
     - Fixed incorrect icon file name for .doc files (issue 200)
     - Do not queue emails with no recipients (issue 201)
     - Disable view and blame links for deleted blobs (issue 216)
     - Fixed NPE in 1.2.1 Federation Client (issue 219)
     - Fixed extracting Groovy scripts on Express installs (issue 220)
     - Ensure Redmine url is properly formatted (issue 223)
     - Use standard ServletRequestWrapper instead of custom wrapper (issue 224)
    additions: 
     - Support --baseFolder parameter in Federation Client
     - Optional periodic LDAP user and team pre-fetching & synchronization
     - Display name and version in Tomcat Manager
     - FogBugz post-receive hook script
src/main/distrib/federation.properties
@@ -8,7 +8,7 @@
#
# SINCE 0.5.0
# RESTART REQUIRED
git.repositoriesFolder = git
git.repositoriesFolder = ${baseFolder}/git
# Search the repositories folder subfolders for other repositories.
# Repositories MAY NOT be nested (i.e. one repository within another)
src/main/java/com/gitblit/FederationClient.java
@@ -44,7 +44,16 @@
            usage(jc, t);
        }
        IStoredSettings settings = new FileSettings(params.registrationsFile);
        System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")");
        // command-line specified base folder
        File baseFolder = new File(System.getProperty("user.dir"));
        if (!StringUtils.isEmpty(params.baseFolder)) {
            baseFolder = new File(params.baseFolder);
        }
        File regFile = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, baseFolder, params.registrationsFile);
        IStoredSettings settings = new FileSettings(regFile.getAbsolutePath());
        List<FederationModel> registrations = new ArrayList<FederationModel>();
        if (StringUtils.isEmpty(params.url)) {
            registrations.addAll(FederationUtils.getFederationRegistrations(settings));
@@ -67,8 +76,6 @@
            System.exit(0);
        }
        
        System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")");
        // command-line specified repositories folder
        if (!StringUtils.isEmpty(params.repositoriesFolder)) {
            settings.overrideSetting(Keys.git.repositoriesFolder, new File(
@@ -76,7 +83,7 @@
        }
        // configure the Gitblit singleton for minimal, non-server operation
        GitBlit.self().configureContext(settings, null, false);
        GitBlit.self().configureContext(settings, baseFolder, false);
        FederationPullExecutor executor = new FederationPullExecutor(registrations, params.isDaemon);
        executor.run();
        if (!params.isDaemon) {
@@ -106,7 +113,7 @@
    private static class Params {
        @Parameter(names = { "--registrations" }, description = "Gitblit Federation Registrations File", required = false)
        public String registrationsFile = "federation.properties";
        public String registrationsFile = "${baseFolder}/federation.properties";
        @Parameter(names = { "--daemon" }, description = "Runs in daemon mode to schedule and pull repositories", required = false)
        public boolean isDaemon;
@@ -126,6 +133,9 @@
        @Parameter(names = { "--frequency" }, description = "Period to wait between pull attempts (requires --daemon)", required = false)
        public String frequency = "60 mins";
        @Parameter(names = { "--baseFolder" }, description = "Base folder for received data", required = false)
        public String baseFolder;
        @Parameter(names = { "--repositoriesFolder" }, description = "Destination folder for cloned repositories", required = false)
        public String repositoriesFolder;
src/main/java/com/gitblit/FederationPullExecutor.java
@@ -153,7 +153,7 @@
                            c, registrationFolder, registration.name));
            return;
        }
        File repositoriesFolder = new File(GitBlit.getString(Keys.git.repositoriesFolder, "git"));
        File repositoriesFolder = GitBlit.getRepositoriesFolder();
        File registrationFolderFile = new File(repositoriesFolder, registrationFolder);
        registrationFolderFile.mkdirs();