public static long scanFullRepository( ScanRepository scanRepository, String url, long fromRev, String indexDirectory, boolean create, ISVNAuthenticationManager authManager, Filtering filtering) throws SVNException { Repository repository = new Repository(url, authManager); boolean firstTime = true; // Assuming we have fromRev: 1 // toRev: HEAD (-1) long latestRevision = repository.getRepository().getLatestRevision(); // Define number per round long deltaRevisions = 10000; long blockNumber = 0; for (long revisions = fromRev; revisions < latestRevision; revisions += deltaRevisions) { long startRevision = revisions; long endRevision = revisions + deltaRevisions - 1; if (endRevision > latestRevision) { endRevision = latestRevision; } blockNumber = revisions / deltaRevisions; // BLOCK BEGIN if (create) { if (firstTime) { firstTime = false; } else { create = false; } } scanRepository.setLogEntries(new ArrayList<SVNLogEntry>()); scanRepository.setRepository(repository); // We start with the revision which is given on the command line. // If it is not given we will start with revision 1. scanRepository.setStartRevision(startRevision); // We will scan the repository to the current HEAD of the repository. scanRepository.setEndRevision(endRevision); scanRepository.setFiltering(filtering); ScanSingleRepository.scanSingleRepos(scanRepository, indexDirectory + blockNumber, create); // BLOCK END } return blockNumber; }
/** * @param fromRev * @param toRev * @param indexDirectory * @param create * @param repository */ public static void scanSingleRepos( ScanRepository scanRepository, String indexDirectory, boolean create) { // BLOCK ANFANG Index index = new Index(); // We will create a new one if --create is given on command line // otherwise we will append to the existing index. Analyzer analyzer = AnalyzerFactory.createInstance(); index.setAnalyzer(analyzer); index.setCreate(create); IndexWriter indexWriter = index.createIndexWriter(indexDirectory); try { LOGGER.info("Scanning started."); scanRepository.scan(indexWriter); LOGGER.info("Scanning ready."); try { long startTime = System.currentTimeMillis(); LOGGER.info("Index optimizing started."); indexWriter.optimize(); indexWriter.close(); long stopTime = System.currentTimeMillis(); LOGGER.info("Index optimizing done."); long ms = (stopTime - startTime); long seconds = ms / 1000; LOGGER.info("The Index optimizing has taken " + seconds + " seconds."); } catch (CorruptIndexException e) { LOGGER.error("CorruptIndexException: Error during optimization of index: ", e); } catch (IOException e) { LOGGER.error("IOException: Error during optimization of index: ", e); } } catch (SVNAuthenticationException svnae) { LOGGER.error("Authentication has failed. ", svnae); } catch (Exception e) { LOGGER.error("Something unexpected went wrong ", e); } }