| | |
| | | import com.gitblit.Constants.FederationStrategy; |
| | | import com.gitblit.Constants.PermissionType; |
| | | import com.gitblit.Constants.RegistrantType; |
| | | import com.gitblit.GCExecutor; |
| | | import com.gitblit.GitBlitException; |
| | | import com.gitblit.IStoredSettings; |
| | | import com.gitblit.Keys; |
| | | import com.gitblit.LuceneExecutor; |
| | | import com.gitblit.MirrorExecutor; |
| | | import com.gitblit.models.ForkModel; |
| | | import com.gitblit.models.Metric; |
| | | import com.gitblit.models.RefModel; |
| | |
| | | import com.gitblit.models.SearchResult; |
| | | import com.gitblit.models.TeamModel; |
| | | import com.gitblit.models.UserModel; |
| | | import com.gitblit.service.GarbageCollectorService; |
| | | import com.gitblit.service.LuceneService; |
| | | import com.gitblit.service.MirrorService; |
| | | import com.gitblit.utils.ArrayUtils; |
| | | import com.gitblit.utils.ByteFormat; |
| | | import com.gitblit.utils.CommitCache; |
| | |
| | | |
| | | private final File repositoriesFolder; |
| | | |
| | | private LuceneExecutor luceneExecutor; |
| | | private LuceneService luceneExecutor; |
| | | |
| | | private GCExecutor gcExecutor; |
| | | private GarbageCollectorService gcExecutor; |
| | | |
| | | private MirrorExecutor mirrorExecutor; |
| | | private MirrorService mirrorExecutor; |
| | | |
| | | public RepositoryManager( |
| | | IRuntimeManager runtimeManager, |
| | |
| | | configureMirrorExecutor(); |
| | | configureJGit(); |
| | | configureCommitCache(); |
| | | |
| | | confirmWriteAccess(); |
| | | |
| | | return this; |
| | | } |
| | |
| | | public void resetRepositoryListCache() { |
| | | logger.info("Repository cache manually reset"); |
| | | repositoryListCache.clear(); |
| | | repositorySizeCache.clear(); |
| | | repositoryMetricsCache.clear(); |
| | | } |
| | | |
| | | /** |
| | |
| | | settings.getStrings(Keys.git.searchExclusions)); |
| | | for (String repository : repositories) { |
| | | RepositoryModel model = getRepositoryModel(userProject + "/" + repository); |
| | | if (model.originRepository.equalsIgnoreCase(origin)) { |
| | | if (model.originRepository != null && model.originRepository.equalsIgnoreCase(origin)) { |
| | | // user has a fork |
| | | return model.name; |
| | | } |
| | |
| | | } |
| | | |
| | | protected void configureLuceneIndexing() { |
| | | luceneExecutor = new LuceneExecutor(settings, this); |
| | | luceneExecutor = new LuceneService(settings, this); |
| | | int period = 2; |
| | | scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, period, TimeUnit.MINUTES); |
| | | logger.info("Lucene will process indexed branches every {} minutes.", period); |
| | |
| | | |
| | | protected void configureGarbageCollector() { |
| | | // schedule gc engine |
| | | gcExecutor = new GCExecutor(settings, this); |
| | | gcExecutor = new GarbageCollectorService(settings, this); |
| | | if (gcExecutor.isReady()) { |
| | | logger.info("Garbage Collector (GC) will scan repositories every 24 hours."); |
| | | Calendar c = Calendar.getInstance(); |
| | |
| | | } |
| | | |
| | | protected void configureMirrorExecutor() { |
| | | mirrorExecutor = new MirrorExecutor(settings, this); |
| | | mirrorExecutor = new MirrorService(settings, this); |
| | | if (mirrorExecutor.isReady()) { |
| | | int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins")); |
| | | if (mins < 5) { |
| | |
| | | daysToCache, commitCount, repoCount, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start))); |
| | | } |
| | | } |
| | | |
| | | protected void confirmWriteAccess() { |
| | | if (runtimeManager.isServingRepositories()) { |
| | | try { |
| | | File file = File.createTempFile(".test-", ".txt", getRepositoriesFolder()); |
| | | file.delete(); |
| | | } catch (Exception e) { |
| | | logger.error(""); |
| | | logger.error(Constants.BORDER2); |
| | | logger.error("Please check filesystem permissions!"); |
| | | logger.error("FAILED TO WRITE TO REPOSITORIES FOLDER!!", e); |
| | | logger.error(Constants.BORDER2); |
| | | logger.error(""); |
| | | } |
| | | } |
| | | } |
| | | } |