From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001 From: Gerard Smyth <gerard.smyth@gmail.com> Date: Thu, 08 May 2014 13:09:30 -0400 Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored. --- src/main/java/com/gitblit/FederationClient.java | 112 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 76 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gitblit/FederationClient.java b/src/main/java/com/gitblit/FederationClient.java index eae6b94..c3dcd9d 100644 --- a/src/main/java/com/gitblit/FederationClient.java +++ b/src/main/java/com/gitblit/FederationClient.java @@ -17,13 +17,23 @@ import java.io.File; import java.util.ArrayList; +import java.util.Collection; import java.util.List; -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; -import com.beust.jcommander.ParameterException; -import com.beust.jcommander.Parameters; +import org.kohsuke.args4j.CmdLineException; +import org.kohsuke.args4j.CmdLineParser; +import org.kohsuke.args4j.Option; + +import com.gitblit.manager.FederationManager; +import com.gitblit.manager.GitblitManager; +import com.gitblit.manager.IGitblit; +import com.gitblit.manager.INotificationManager; +import com.gitblit.manager.RepositoryManager; +import com.gitblit.manager.RuntimeManager; +import com.gitblit.manager.UserManager; import com.gitblit.models.FederationModel; +import com.gitblit.models.Mailing; +import com.gitblit.service.FederationPullService; import com.gitblit.utils.FederationUtils; import com.gitblit.utils.StringUtils; @@ -37,11 +47,11 @@ public static void main(String[] args) { Params params = new Params(); - JCommander jc = new JCommander(params); + CmdLineParser parser = new CmdLineParser(params); try { - jc.parse(args); - } catch (ParameterException t) { - usage(jc, t); + parser.parseArgument(args); + } catch (CmdLineException t) { + usage(parser, t); } System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")"); @@ -53,7 +63,7 @@ } File regFile = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, baseFolder, params.registrationsFile); - IStoredSettings settings = new FileSettings(regFile.getAbsolutePath()); + FileSettings settings = new FileSettings(regFile.getAbsolutePath()); List<FederationModel> registrations = new ArrayList<FederationModel>(); if (StringUtils.isEmpty(params.url)) { registrations.addAll(FederationUtils.getFederationRegistrations(settings)); @@ -67,7 +77,6 @@ model.token = params.token; model.mirror = params.mirror; model.bare = params.bare; - model.frequency = params.frequency; model.folder = ""; registrations.add(model); } @@ -83,17 +92,26 @@ } // configure the Gitblit singleton for minimal, non-server operation - GitBlit gitblit = new GitBlit(settings, baseFolder); - gitblit.configureContext(settings, baseFolder, false); - FederationPullExecutor executor = new FederationPullExecutor(registrations, params.isDaemon); - executor.run(); - if (!params.isDaemon) { - System.out.println("Finished."); - System.exit(0); - } + RuntimeManager runtime = new RuntimeManager(settings, baseFolder).start(); + NoopNotificationManager notifications = new NoopNotificationManager().start(); + UserManager users = new UserManager(runtime).start(); + RepositoryManager repositories = new RepositoryManager(runtime, users).start(); + FederationManager federation = new FederationManager(runtime, notifications, repositories).start(); + IGitblit gitblit = new GitblitManager(runtime, null, notifications, users, null, null, repositories, null, federation); + + FederationPullService puller = new FederationPullService(gitblit, federation.getFederationRegistrations()) { + @Override + public void reschedule(FederationModel registration) { + // NOOP + } + }; + puller.run(); + + System.out.println("Finished."); + System.exit(0); } - private static void usage(JCommander jc, ParameterException t) { + private static void usage(CmdLineParser parser, CmdLineException t) { System.out.println(Constants.getGitBlitVersion()); System.out.println(); if (t != null) { @@ -101,44 +119,66 @@ System.out.println(); } - if (jc != null) { - jc.usage(); + if (parser != null) { + parser.printUsage(System.out); } System.exit(0); } /** - * JCommander Parameters class for FederationClient. + * Parameters class for FederationClient. */ - @Parameters(separators = " ") private static class Params { - @Parameter(names = { "--registrations" }, description = "Gitblit Federation Registrations File", required = false) + @Option(name = "--registrations", usage = "Gitblit Federation Registrations File", metaVar = "FILE") public String registrationsFile = "${baseFolder}/federation.properties"; - @Parameter(names = { "--daemon" }, description = "Runs in daemon mode to schedule and pull repositories", required = false) - public boolean isDaemon; - - @Parameter(names = { "--url" }, description = "URL of Gitblit instance to mirror from", required = false) + @Option(name = "--url", usage = "URL of Gitblit instance to mirror from", metaVar = "URL") public String url; - @Parameter(names = { "--mirror" }, description = "Mirror repositories", required = false) + @Option(name = "--mirror", usage = "Mirror repositories") public boolean mirror; - @Parameter(names = { "--bare" }, description = "Create bare repositories", required = false) + @Option(name = "--bare", usage = "Create bare repositories") public boolean bare; - @Parameter(names = { "--token" }, description = "Federation Token", required = false) + @Option(name = "--token", usage = "Federation Token", metaVar = "TOKEN") public String token; - @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) + @Option(name = "--baseFolder", usage = "Base folder for received data", metaVar = "PATH") public String baseFolder; - @Parameter(names = { "--repositoriesFolder" }, description = "Destination folder for cloned repositories", required = false) + @Option(name = "--repositoriesFolder", usage = "Destination folder for cloned repositories", metaVar = "PATH") public String repositoriesFolder; } + + private static class NoopNotificationManager implements INotificationManager { + + @Override + public NoopNotificationManager start() { + return this; + } + + @Override + public NoopNotificationManager stop() { + return this; + } + + @Override + public void sendMailToAdministrators(String subject, String message) { + } + + @Override + public void sendMail(String subject, String message, Collection<String> toAddresses) { + } + + @Override + public void sendHtmlMail(String subject, String message, Collection<String> toAddresses) { + } + + @Override + public void send(Mailing mailing) { + } + } } -- Gitblit v1.9.1