You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ReindexTickets.java 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /*
  2. * Copyright 2014 gitblit.com.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package com.gitblit;
  17. import java.io.File;
  18. import java.text.MessageFormat;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import com.beust.jcommander.JCommander;
  22. import com.beust.jcommander.Parameter;
  23. import com.beust.jcommander.ParameterException;
  24. import com.beust.jcommander.Parameters;
  25. import com.gitblit.manager.IRepositoryManager;
  26. import com.gitblit.manager.IRuntimeManager;
  27. import com.gitblit.manager.RepositoryManager;
  28. import com.gitblit.manager.RuntimeManager;
  29. import com.gitblit.tickets.BranchTicketService;
  30. import com.gitblit.tickets.FileTicketService;
  31. import com.gitblit.tickets.ITicketService;
  32. import com.gitblit.tickets.RedisTicketService;
  33. import com.gitblit.utils.StringUtils;
  34. /**
  35. * A command-line tool to reindex all tickets in all repositories when the
  36. * indexes needs to be rebuilt.
  37. *
  38. * @author James Moger
  39. *
  40. */
  41. public class ReindexTickets {
  42. public static void main(String... args) {
  43. ReindexTickets reindex = new ReindexTickets();
  44. // filter out the baseFolder parameter
  45. List<String> filtered = new ArrayList<String>();
  46. String folder = "data";
  47. for (int i = 0; i < args.length; i++) {
  48. String arg = args[i];
  49. if (arg.equals("--baseFolder")) {
  50. if (i + 1 == args.length) {
  51. System.out.println("Invalid --baseFolder parameter!");
  52. System.exit(-1);
  53. } else if (!".".equals(args[i + 1])) {
  54. folder = args[i + 1];
  55. }
  56. i = i + 1;
  57. } else {
  58. filtered.add(arg);
  59. }
  60. }
  61. Params.baseFolder = folder;
  62. Params params = new Params();
  63. JCommander jc = new JCommander(params);
  64. try {
  65. jc.parse(filtered.toArray(new String[filtered.size()]));
  66. if (params.help) {
  67. reindex.usage(jc, null);
  68. return;
  69. }
  70. } catch (ParameterException t) {
  71. reindex.usage(jc, t);
  72. return;
  73. }
  74. // load the settings
  75. FileSettings settings = params.FILESETTINGS;
  76. if (!StringUtils.isEmpty(params.settingsfile)) {
  77. if (new File(params.settingsfile).exists()) {
  78. settings = new FileSettings(params.settingsfile);
  79. }
  80. }
  81. // reindex tickets
  82. reindex.reindex(new File(Params.baseFolder), settings);
  83. System.exit(0);
  84. }
  85. /**
  86. * Display the command line usage of ReindexTickets.
  87. *
  88. * @param jc
  89. * @param t
  90. */
  91. protected final void usage(JCommander jc, ParameterException t) {
  92. System.out.println(Constants.BORDER);
  93. System.out.println(Constants.getGitBlitVersion());
  94. System.out.println(Constants.BORDER);
  95. System.out.println();
  96. if (t != null) {
  97. System.out.println(t.getMessage());
  98. System.out.println();
  99. }
  100. if (jc != null) {
  101. jc.usage();
  102. System.out
  103. .println("\nExample:\n java -gitblit.jar com.gitblit.ReindexTickets --baseFolder c:\\gitblit-data");
  104. }
  105. System.exit(0);
  106. }
  107. /**
  108. * Reindex all tickets
  109. *
  110. * @param settings
  111. */
  112. protected void reindex(File baseFolder, IStoredSettings settings) {
  113. // disable some services
  114. settings.overrideSetting(Keys.web.allowLuceneIndexing, false);
  115. settings.overrideSetting(Keys.git.enableGarbageCollection, false);
  116. settings.overrideSetting(Keys.git.enableMirroring, false);
  117. settings.overrideSetting(Keys.web.activityCacheDays, 0);
  118. IRuntimeManager runtimeManager = new RuntimeManager(settings, baseFolder).start();
  119. IRepositoryManager repositoryManager = new RepositoryManager(runtimeManager, null).start();
  120. String serviceName = settings.getString(Keys.tickets.service, BranchTicketService.class.getSimpleName());
  121. if (StringUtils.isEmpty(serviceName)) {
  122. System.err.println(MessageFormat.format("Please define a ticket service in \"{0}\"", Keys.tickets.service));
  123. System.exit(1);
  124. }
  125. ITicketService ticketService = null;
  126. try {
  127. Class<?> serviceClass = Class.forName(serviceName);
  128. if (RedisTicketService.class.isAssignableFrom(serviceClass)) {
  129. // Redis ticket service
  130. ticketService = new RedisTicketService(runtimeManager, null, null, repositoryManager).start();
  131. } else if (BranchTicketService.class.isAssignableFrom(serviceClass)) {
  132. // Branch ticket service
  133. ticketService = new BranchTicketService(runtimeManager, null, null, repositoryManager).start();
  134. } else if (FileTicketService.class.isAssignableFrom(serviceClass)) {
  135. // File ticket service
  136. ticketService = new FileTicketService(runtimeManager, null, null, repositoryManager).start();
  137. } else {
  138. System.err.println("Unknown ticket service " + serviceName);
  139. System.exit(1);
  140. }
  141. } catch (Exception e) {
  142. e.printStackTrace();
  143. System.exit(1);
  144. }
  145. ticketService.reindex();
  146. ticketService.stop();
  147. repositoryManager.stop();
  148. runtimeManager.stop();
  149. }
  150. /**
  151. * JCommander Parameters.
  152. */
  153. @Parameters(separators = " ")
  154. public static class Params {
  155. public static String baseFolder;
  156. @Parameter(names = { "-h", "--help" }, description = "Show this help")
  157. public Boolean help = false;
  158. private final FileSettings FILESETTINGS = new FileSettings(new File(baseFolder, Constants.PROPERTIES_FILE).getAbsolutePath());
  159. @Parameter(names = { "--repositoriesFolder" }, description = "Git Repositories Folder")
  160. public String repositoriesFolder = FILESETTINGS.getString(Keys.git.repositoriesFolder, "git");
  161. @Parameter(names = { "--settings" }, description = "Path to alternative settings")
  162. public String settingsfile;
  163. }
  164. }