List of usage examples for org.eclipse.jgit.lib Repository close
@Override public void close()
Decrement the use count, and maybe close resources.
From source file:com.google.gerrit.server.changedetail.RebaseChange.java
License:Apache License
public boolean canRebase(RevisionResource r) { Repository git; try {/* w w w . j ava2s.c o m*/ git = gitManager.openRepository(r.getChange().getProject()); } catch (RepositoryNotFoundException err) { return false; } catch (IOException err) { return false; } try { findBaseRevision(r.getPatchSet().getId(), db.get(), r.getChange().getDest(), git, null, null, null); return true; } catch (IOException e) { return false; } catch (OrmException e) { return false; } finally { git.close(); } }
From source file:com.google.gerrit.server.changedetail.RebaseChange.java
License:Apache License
public static boolean canDoRebase(final ReviewDb db, final Change change, final GitRepositoryManager gitManager, List<PatchSetAncestor> patchSetAncestors, List<PatchSet> depPatchSetList, List<Change> depChangeList) throws OrmException, RepositoryNotFoundException, IOException { final Repository git = gitManager.openRepository(change.getProject()); try {/*from w w w .java 2 s. com*/ // If no exception is thrown, then we can do a rebase. findBaseRevision(change.currentPatchSetId(), db, change.getDest(), git, patchSetAncestors, depPatchSetList, depChangeList); return true; } catch (IOException e) { return false; } finally { git.close(); } }
From source file:com.google.gerrit.server.git.gpg.PushCertificateChecker.java
License:Apache License
/** * Check a push certificate./*from w w w . j a va2 s .c om*/ * * @return result of the check. * @throws PGPException if an error occurred during GPG checks. * @throws IOException if an error occurred reading from the repository. */ public final CheckResult check(PushCertificate cert) throws PGPException, IOException { if (cert.getNonceStatus() != NonceStatus.OK) { return new CheckResult("Invalid nonce"); } PGPSignature sig = readSignature(cert); if (sig == null) { return new CheckResult("Invalid signature format"); } Repository repo = getRepository(); List<String> problems = new ArrayList<>(); try (PublicKeyStore store = new PublicKeyStore(repo)) { checkSignature(sig, cert, store.get(sig.getKeyID()), problems); checkCustom(repo, problems); return new CheckResult(problems); } finally { if (shouldClose(repo)) { repo.close(); } } }
From source file:com.google.gerrit.server.index.ChangeBatchIndexer.java
License:Apache License
private Callable<Void> reindexProject(final ChangeIndexer indexer, final Project.NameKey project, final Task done, final Task failed, final PrintWriter verboseWriter) { return new Callable<Void>() { @Override//from www. j av a2s.c o m public Void call() throws Exception { Multimap<ObjectId, ChangeData> byId = ArrayListMultimap.create(); ReviewDb db = schemaFactory.open(); try { Repository repo = repoManager.openRepository(project); try { Map<String, Ref> refs = repo.getAllRefs(); for (Change c : db.changes().byProject(project)) { Ref r = refs.get(c.currentPatchSetId().toRefName()); if (r != null) { byId.put(r.getObjectId(), new ChangeData(c)); } } new ProjectIndexer(indexer, byId, repo, done, failed, verboseWriter).call(); } finally { repo.close(); // TODO(dborowitz): Opening all repositories in a live server may be // wasteful; see if we can determine which ones it is safe to close // with RepositoryCache.close(repo). } } finally { db.close(); } return null; } }; }
From source file:com.google.gerrit.server.mail.NewChangeSender.java
License:Apache License
/** Show patch set as unified difference. */ public String getUnifiedDiff() { PatchList patchList;//from w w w . ja va 2s . c o m try { patchList = getPatchList(); if (patchList.getOldId() == null) { // Octopus merges are not well supported for diff output by Gerrit. // Currently these always have a null oldId in the PatchList. return ""; } } catch (PatchListNotAvailableException e) { log.error("Cannot format patch", e); return ""; } TemporaryBuffer.Heap buf = new TemporaryBuffer.Heap(args.settings.maximumDiffSize); DiffFormatter fmt = new DiffFormatter(buf); Repository git; try { git = args.server.openRepository(change.getProject()); } catch (IOException e) { log.error("Cannot open repository to format patch", e); return ""; } try { fmt.setRepository(git); fmt.setDetectRenames(true); fmt.format(patchList.getOldId(), patchList.getNewId()); return RawParseUtils.decode(buf.toByteArray()); } catch (IOException e) { if (JGitText.get().inMemoryBufferLimitExceeded.equals(e.getMessage())) { return ""; } log.error("Cannot format patch", e); return ""; } finally { fmt.release(); git.close(); } }
From source file:com.google.gerrit.server.project.PerformCreateProject.java
License:Apache License
public Project createProject() throws ProjectCreationFailedException { validateParameters();/* w w w . j a v a2s. c om*/ final Project.NameKey nameKey = createProjectArgs.getProject(); try { final String head = createProjectArgs.permissionsOnly ? RefNames.REFS_CONFIG : createProjectArgs.branch.get(0); final Repository repo = repoManager.createRepository(nameKey); try { NewProjectCreatedListener.Event event = new NewProjectCreatedListener.Event() { @Override public String getProjectName() { return nameKey.get(); } @Override public String getHeadName() { return head; } }; for (NewProjectCreatedListener l : createdListener) { try { l.onNewProjectCreated(event); } catch (RuntimeException e) { log.warn("Failure in NewProjectCreatedListener", e); } } final RefUpdate u = repo.updateRef(Constants.HEAD); u.disableRefLog(); u.link(head); createProjectConfig(); if (!createProjectArgs.permissionsOnly && createProjectArgs.createEmptyCommit) { createEmptyCommits(repo, nameKey, createProjectArgs.branch); } return projectCache.get(nameKey).getProject(); } finally { repo.close(); } } catch (RepositoryCaseMismatchException e) { throw new ProjectCreationFailedException( "Cannot create " + nameKey.get() + " because the name is already occupied by another project." + " The other project has the same name, only spelled in a" + " different case.", e); } catch (RepositoryNotFoundException badName) { throw new ProjectCreationFailedException("Cannot create " + nameKey, badName); } catch (IllegalStateException err) { try { final Repository repo = repoManager.openRepository(nameKey); try { if (repo.getObjectDatabase().exists()) { throw new ProjectCreationFailedException("project \"" + nameKey + "\" exists"); } throw err; } finally { repo.close(); } } catch (IOException ioErr) { final String msg = "Cannot create " + nameKey; log.error(msg, err); throw new ProjectCreationFailedException(msg, ioErr); } } catch (Exception e) { final String msg = "Cannot create " + nameKey; log.error(msg, e); throw new ProjectCreationFailedException(msg, e); } }
From source file:com.google.gerrit.server.query.change.MessagePredicate.java
License:Apache License
@Override public boolean match(ChangeData object) throws OrmException { final PatchSet patchSet = object.currentPatchSet(db); if (patchSet == null) { return false; }/* www . j a v a2s.co m*/ final RevId revision = patchSet.getRevision(); if (revision == null) { return false; } final AnyObjectId objectId = ObjectId.fromString(revision.get()); if (objectId == null) { return false; } final Change change = object.change(db); if (change == null) { return false; } final Project.NameKey projectName = change.getProject(); if (projectName == null) { return false; } try { final Repository repo = repoManager.openRepository(projectName); try { final RevWalk rw = new RevWalk(repo); try { return rFilter.include(rw, rw.parseCommit(objectId)); } finally { rw.release(); } } finally { repo.close(); } } catch (RepositoryNotFoundException e) { log.error("Repository \"" + projectName.get() + "\" unknown.", e); } catch (MissingObjectException e) { log.error(projectName.get() + "\" commit does not exist.", e); } catch (IncorrectObjectTypeException e) { log.error(projectName.get() + "\" revision is not a commit.", e); } catch (IOException e) { log.error("Could not search for commit message in \"" + projectName.get() + "\" repository.", e); } return false; }
From source file:com.google.gerrit.server.query.change.RevWalkPredicate.java
License:Apache License
@Override public boolean match(ChangeData object) throws OrmException { final PatchSet patchSet = object.currentPatchSet(); if (patchSet == null) { return false; }/*from w w w.j av a 2s . co m*/ final RevId revision = patchSet.getRevision(); if (revision == null) { return false; } final AnyObjectId objectId = ObjectId.fromString(revision.get()); if (objectId == null) { return false; } Change change = object.change(); if (change == null) { return false; } final Project.NameKey projectName = change.getProject(); if (projectName == null) { return false; } Arguments args = new Arguments(patchSet, revision, objectId, change, projectName); try { final Repository repo = repoManager.openRepository(projectName); try { final RevWalk rw = new RevWalk(repo); try { return match(repo, rw, args); } finally { rw.release(); } } finally { repo.close(); } } catch (RepositoryNotFoundException e) { log.error("Repository \"" + projectName.get() + "\" unknown.", e); } catch (IOException e) { log.error(projectName.get() + " cannot be read as a repository", e); } return false; }
From source file:com.google.gerrit.server.schema.Schema_53.java
License:Apache License
private void exportProjectConfig(ReviewDb db) throws OrmException, SQLException { Statement stmt = ((JdbcSchema) db).getConnection().createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM projects ORDER BY name"); while (rs.next()) { final String name = rs.getString("name"); final Project.NameKey nameKey = new Project.NameKey(name); Repository git; try {//w w w .j av a2 s . c o m git = mgr.openRepository(nameKey); } catch (RepositoryNotFoundException notFound) { // A repository may be missing if this project existed only to store // inheritable permissions. For example 'All-Projects'. try { git = mgr.createRepository(nameKey); } catch (RepositoryNotFoundException err) { throw new OrmException("Cannot create repository " + name, err); } } try { MetaDataUpdate md = new MetaDataUpdate(new NoReplication(), nameKey, git); md.getCommitBuilder().setAuthor(serverUser); md.getCommitBuilder().setCommitter(serverUser); ProjectConfig config = ProjectConfig.read(md); loadProject(rs, config.getProject()); config.getAccessSections().clear(); convertRights(config); // Grant out read on the config branch by default. // if (config.getProject().getNameKey().equals(systemConfig.wildProjectName)) { AccessSection meta = config.getAccessSection(GitRepositoryManager.REF_CONFIG, true); Permission read = meta.getPermission(READ, true); read.getRule(config.resolve(projectOwners), true); } md.setMessage("Import project configuration from SQL\n"); if (!config.commit(md)) { throw new OrmException("Cannot export project " + name); } } catch (ConfigInvalidException err) { throw new OrmException("Cannot read project " + name, err); } catch (IOException err) { throw new OrmException("Cannot export project " + name, err); } finally { git.close(); } } rs.close(); stmt.close(); }
From source file:com.google.gerrit.server.schema.Schema_56.java
License:Apache License
@Override protected void migrateData(ReviewDb db, UpdateUI ui) { for (Project.NameKey name : mgr.list()) { Repository git; try {/*from w ww.j a v a2s.c om*/ git = mgr.openRepository(name); } catch (RepositoryNotFoundException e) { ui.message("warning: Cannot open " + name.get()); continue; } try { Map<String, Ref> all = git.getAllRefs(); if (all.keySet().equals(keysOne) || all.keySet().equals(keysTwo)) { try { RefUpdate update = git.updateRef(Constants.HEAD); update.disableRefLog(); update.link(GitRepositoryManager.REF_CONFIG); } catch (IOException err) { ui.message("warning: " + name.get() + ": Cannot update HEAD to " + GitRepositoryManager.REF_CONFIG + ": " + err.getMessage()); } } } finally { git.close(); } } }