Convert to new AutoCloseable instances coming in JGit 4.0
Repository, RevWalk, and friends have been converted to AutoCloseable. Use them in try-with-resources blocks in order to avoid warnings about unclosed resources or calls to deprecated release() methods. Where a larger rewrite might have been possible to reduce try/finally blocks, err on the side of keeping the same behavior. The proximate goal of this change was to eliminate all Eclipse warnings about deprecated method calls (namely release()) and leaked resources. Some of these warnings were in fact potential leaks; Eclipse finding such cases is a side benefit of having these classes implement AutoCloseable. However, this change certainly does not cover all cases where try-with-resources could have been used, where it was not causing a leak. Fixes all such warnings in plugin submodules as well. Change-Id: I5d151996ae012d0e8fdfa27cce8cf5e2bfc856a2
This commit is contained in:

committed by
David Pursehouse

parent
f4fff188ba
commit
7273df290a
@@ -222,53 +222,37 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void assertCommit(Project.NameKey project, String branch) throws IOException {
|
private void assertCommit(Project.NameKey project, String branch) throws IOException {
|
||||||
Repository r = repoManager.openRepository(project);
|
try (Repository r = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(r)) {
|
||||||
RevWalk rw = new RevWalk(r);
|
|
||||||
try {
|
|
||||||
RevCommit c = rw.parseCommit(r.getRef(branch).getObjectId());
|
RevCommit c = rw.parseCommit(r.getRef(branch).getObjectId());
|
||||||
assertThat(c.getShortMessage()).isEqualTo(PushOneCommit.SUBJECT);
|
assertThat(c.getShortMessage()).isEqualTo(PushOneCommit.SUBJECT);
|
||||||
assertThat(c.getAuthorIdent().getEmailAddress()).isEqualTo(admin.email);
|
assertThat(c.getAuthorIdent().getEmailAddress()).isEqualTo(admin.email);
|
||||||
assertThat(c.getCommitterIdent().getEmailAddress()).isEqualTo(
|
assertThat(c.getCommitterIdent().getEmailAddress()).isEqualTo(
|
||||||
admin.email);
|
admin.email);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
r.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertMergeCommit(String branch, String subject) throws IOException {
|
private void assertMergeCommit(String branch, String subject) throws IOException {
|
||||||
Repository r = repoManager.openRepository(project);
|
try (Repository r = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(r)) {
|
||||||
RevWalk rw = new RevWalk(r);
|
|
||||||
try {
|
|
||||||
RevCommit c = rw.parseCommit(r.getRef(branch).getObjectId());
|
RevCommit c = rw.parseCommit(r.getRef(branch).getObjectId());
|
||||||
assertThat(c.getParentCount()).is(2);
|
assertThat(c.getParentCount()).is(2);
|
||||||
assertThat(c.getShortMessage()).isEqualTo("Merge \"" + subject + "\"");
|
assertThat(c.getShortMessage()).isEqualTo("Merge \"" + subject + "\"");
|
||||||
assertThat(c.getAuthorIdent().getEmailAddress()).isEqualTo(admin.email);
|
assertThat(c.getAuthorIdent().getEmailAddress()).isEqualTo(admin.email);
|
||||||
assertThat(c.getCommitterIdent().getEmailAddress()).isEqualTo(
|
assertThat(c.getCommitterIdent().getEmailAddress()).isEqualTo(
|
||||||
serverIdent.getEmailAddress());
|
serverIdent.getEmailAddress());
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
r.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertTag(Project.NameKey project, String branch,
|
private void assertTag(Project.NameKey project, String branch,
|
||||||
PushOneCommit.Tag tag) throws IOException {
|
PushOneCommit.Tag tag) throws IOException {
|
||||||
Repository repo = repoManager.openRepository(project);
|
try (Repository repo = repoManager.openRepository(project)) {
|
||||||
try {
|
|
||||||
Ref tagRef = repo.getRef(tag.name);
|
Ref tagRef = repo.getRef(tag.name);
|
||||||
assertThat(tagRef).isNotNull();
|
assertThat(tagRef).isNotNull();
|
||||||
ObjectId taggedCommit = null;
|
ObjectId taggedCommit = null;
|
||||||
if (tag instanceof PushOneCommit.AnnotatedTag) {
|
if (tag instanceof PushOneCommit.AnnotatedTag) {
|
||||||
PushOneCommit.AnnotatedTag annotatedTag = (PushOneCommit.AnnotatedTag)tag;
|
PushOneCommit.AnnotatedTag annotatedTag = (PushOneCommit.AnnotatedTag)tag;
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
RevObject object = rw.parseAny(tagRef.getObjectId());
|
RevObject object = rw.parseAny(tagRef.getObjectId());
|
||||||
assertThat(object).isInstanceOf(RevTag.class);
|
assertThat(object).isInstanceOf(RevTag.class);
|
||||||
RevTag tagObject = (RevTag) object;
|
RevTag tagObject = (RevTag) object;
|
||||||
@@ -276,8 +260,6 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
.isEqualTo(annotatedTag.message);
|
.isEqualTo(annotatedTag.message);
|
||||||
assertThat(tagObject.getTaggerIdent()).isEqualTo(annotatedTag.tagger);
|
assertThat(tagObject.getTaggerIdent()).isEqualTo(annotatedTag.tagger);
|
||||||
taggedCommit = tagObject.getObject();
|
taggedCommit = tagObject.getObject();
|
||||||
} finally {
|
|
||||||
rw.dispose();
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
taggedCommit = tagRef.getObjectId();
|
taggedCommit = tagRef.getObjectId();
|
||||||
@@ -285,8 +267,6 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
|
|||||||
ObjectId headCommit = repo.getRef(branch).getObjectId();
|
ObjectId headCommit = repo.getRef(branch).getObjectId();
|
||||||
assertThat(taggedCommit).isNotNull();
|
assertThat(taggedCommit).isNotNull();
|
||||||
assertThat(taggedCommit).isEqualTo(headCommit);
|
assertThat(taggedCommit).isEqualTo(headCommit);
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -337,40 +337,23 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected RevCommit getRemoteHead() throws IOException {
|
protected RevCommit getRemoteHead() throws IOException {
|
||||||
Repository repo = repoManager.openRepository(project);
|
try (Repository repo = repoManager.openRepository(project)) {
|
||||||
try {
|
|
||||||
return getHead(repo, "refs/heads/master");
|
return getHead(repo, "refs/heads/master");
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<RevCommit> getRemoteLog() throws IOException {
|
protected List<RevCommit> getRemoteLog() throws IOException {
|
||||||
Repository repo = repoManager.openRepository(project);
|
try (Repository repo = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
rw.markStart(rw.parseCommit(
|
rw.markStart(rw.parseCommit(
|
||||||
repo.getRef("refs/heads/master").getObjectId()));
|
repo.getRef("refs/heads/master").getObjectId()));
|
||||||
return Lists.newArrayList(rw);
|
return Lists.newArrayList(rw);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private RevCommit getHead(Repository repo, String name) throws IOException {
|
private RevCommit getHead(Repository repo, String name) throws IOException {
|
||||||
try {
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
return rw.parseCommit(repo.getRef(name).getObjectId());
|
return rw.parseCommit(repo.getRef(name).getObjectId());
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,28 +364,22 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getLatestRemoteDiff() throws IOException {
|
private String getLatestRemoteDiff() throws IOException {
|
||||||
Repository repo = repoManager.openRepository(project);
|
try (Repository repo = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
ObjectId oldTreeId = repo.resolve("refs/heads/master~1^{tree}");
|
ObjectId oldTreeId = repo.resolve("refs/heads/master~1^{tree}");
|
||||||
ObjectId newTreeId = repo.resolve("refs/heads/master^{tree}");
|
ObjectId newTreeId = repo.resolve("refs/heads/master^{tree}");
|
||||||
return getLatestDiff(repo, oldTreeId, newTreeId);
|
return getLatestDiff(repo, oldTreeId, newTreeId);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getLatestDiff(Repository repo, ObjectId oldTreeId,
|
private String getLatestDiff(Repository repo, ObjectId oldTreeId,
|
||||||
ObjectId newTreeId) throws IOException {
|
ObjectId newTreeId) throws IOException {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
DiffFormatter fmt = new DiffFormatter(out);
|
try (DiffFormatter fmt = new DiffFormatter(out)) {
|
||||||
fmt.setRepository(repo);
|
fmt.setRepository(repo);
|
||||||
fmt.format(oldTreeId, newTreeId);
|
fmt.format(oldTreeId, newTreeId);
|
||||||
fmt.flush();
|
fmt.flush();
|
||||||
return out.toString();
|
return out.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@@ -238,11 +238,10 @@ public class CreateProjectIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
private void assertEmptyCommit(String projectName, String... refs)
|
private void assertEmptyCommit(String projectName, String... refs)
|
||||||
throws RepositoryNotFoundException, IOException {
|
throws RepositoryNotFoundException, IOException {
|
||||||
Repository repo =
|
Project.NameKey projectKey = new Project.NameKey(projectName);
|
||||||
repoManager.openRepository(new Project.NameKey(projectName));
|
try (Repository repo = repoManager.openRepository(projectKey);
|
||||||
RevWalk rw = new RevWalk(repo);
|
RevWalk rw = new RevWalk(repo);
|
||||||
TreeWalk tw = new TreeWalk(repo);
|
TreeWalk tw = new TreeWalk(rw.getObjectReader())) {
|
||||||
try {
|
|
||||||
for (String ref : refs) {
|
for (String ref : refs) {
|
||||||
RevCommit commit = rw.lookupCommit(repo.getRef(ref).getObjectId());
|
RevCommit commit = rw.lookupCommit(repo.getRef(ref).getObjectId());
|
||||||
rw.parseBody(commit);
|
rw.parseBody(commit);
|
||||||
@@ -250,9 +249,6 @@ public class CreateProjectIT extends AbstractDaemonTest {
|
|||||||
assertThat(tw.next()).isFalse();
|
assertThat(tw.next()).isFalse();
|
||||||
tw.reset();
|
tw.reset();
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -202,12 +202,9 @@ public class CatServlet extends HttpServlet {
|
|||||||
final RevCommit fromCommit;
|
final RevCommit fromCommit;
|
||||||
final String suffix;
|
final String suffix;
|
||||||
final String path = patchKey.getFileName();
|
final String path = patchKey.getFileName();
|
||||||
try {
|
try (ObjectReader reader = repo.newObjectReader();
|
||||||
final ObjectReader reader = repo.newObjectReader();
|
RevWalk rw = new RevWalk(reader)) {
|
||||||
try {
|
|
||||||
final RevWalk rw = new RevWalk(reader);
|
|
||||||
final RevCommit c;
|
final RevCommit c;
|
||||||
final TreeWalk tw;
|
|
||||||
|
|
||||||
c = rw.parseCommit(ObjectId.fromString(revision));
|
c = rw.parseCommit(ObjectId.fromString(revision));
|
||||||
if (side == 0) {
|
if (side == 0) {
|
||||||
@@ -227,7 +224,7 @@ public class CatServlet extends HttpServlet {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tw = TreeWalk.forPath(reader, path, fromCommit.getTree());
|
try (TreeWalk tw = TreeWalk.forPath(reader, path, fromCommit.getTree())) {
|
||||||
if (tw == null) {
|
if (tw == null) {
|
||||||
rsp.sendError(HttpServletResponse.SC_NOT_FOUND);
|
rsp.sendError(HttpServletResponse.SC_NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
@@ -240,8 +237,6 @@ public class CatServlet extends HttpServlet {
|
|||||||
rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
rsp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
reader.release();
|
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
getServletContext().log("Cannot read repository", e);
|
getServletContext().log("Cannot read repository", e);
|
||||||
|
@@ -185,11 +185,8 @@ public class RebuildNotedb extends SiteProgram {
|
|||||||
|
|
||||||
private static void execute(BatchRefUpdate bru, Repository repo)
|
private static void execute(BatchRefUpdate bru, Repository repo)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,13 +136,10 @@ public class AllProjectsConfig extends VersionedMetaData {
|
|||||||
throw new IOException("All-Projects does not exist.");
|
throw new IOException("All-Projects does not exist.");
|
||||||
}
|
}
|
||||||
|
|
||||||
Repository repo = new FileRepository(path);
|
try (Repository repo = new FileRepository(path)) {
|
||||||
try {
|
|
||||||
inserter = repo.newObjectInserter();
|
inserter = repo.newObjectInserter();
|
||||||
reader = repo.newObjectReader();
|
reader = repo.newObjectReader();
|
||||||
try {
|
try (RevWalk rw = new RevWalk(reader)) {
|
||||||
RevWalk rw = new RevWalk(reader);
|
|
||||||
try {
|
|
||||||
RevTree srcTree = revision != null ? rw.parseTree(revision) : null;
|
RevTree srcTree = revision != null ? rw.parseTree(revision) : null;
|
||||||
newTree = readTree(srcTree);
|
newTree = readTree(srcTree);
|
||||||
saveConfig(ProjectConfig.PROJECT_CONFIG, cfg);
|
saveConfig(ProjectConfig.PROJECT_CONFIG, cfg);
|
||||||
@@ -164,21 +161,16 @@ public class AllProjectsConfig extends VersionedMetaData {
|
|||||||
ObjectId newRevision = inserter.insert(commit);
|
ObjectId newRevision = inserter.insert(commit);
|
||||||
updateRef(repo, ident, newRevision, "commit: " + msg);
|
updateRef(repo, ident, newRevision, "commit: " + msg);
|
||||||
revision = newRevision;
|
revision = newRevision;
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
if (inserter != null) {
|
if (inserter != null) {
|
||||||
inserter.release();
|
inserter.close();
|
||||||
inserter = null;
|
inserter = null;
|
||||||
}
|
}
|
||||||
if (reader != null) {
|
if (reader != null) {
|
||||||
reader.release();
|
reader.close();
|
||||||
reader = null;
|
reader = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// we need to invalidate the JGit cache if the group list is invalidated in
|
// we need to invalidate the JGit cache if the group list is invalidated in
|
||||||
|
@@ -26,6 +26,7 @@ import com.google.gerrit.reviewdb.client.Change;
|
|||||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSetAncestor;
|
import com.google.gerrit.reviewdb.client.PatchSetAncestor;
|
||||||
|
import com.google.gerrit.reviewdb.client.Project;
|
||||||
import com.google.gerrit.reviewdb.client.RevId;
|
import com.google.gerrit.reviewdb.client.RevId;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.change.ChangeInserter;
|
import com.google.gerrit.server.change.ChangeInserter;
|
||||||
@@ -227,15 +228,9 @@ public class ChangeUtil {
|
|||||||
}
|
}
|
||||||
Change changeToRevert = db.get().changes().get(changeId);
|
Change changeToRevert = db.get().changes().get(changeId);
|
||||||
|
|
||||||
Repository git;
|
Project.NameKey project = ctl.getChange().getProject();
|
||||||
try {
|
try (Repository git = gitManager.openRepository(project);
|
||||||
git = gitManager.openRepository(ctl.getChange().getProject());
|
RevWalk revWalk = new RevWalk(git)) {
|
||||||
} catch (RepositoryNotFoundException e) {
|
|
||||||
throw new NoSuchChangeException(changeId, e);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
RevWalk revWalk = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
RevCommit commitToRevert =
|
RevCommit commitToRevert =
|
||||||
revWalk.parseCommit(ObjectId.fromString(patch.getRevision().get()));
|
revWalk.parseCommit(ObjectId.fromString(patch.getRevision().get()));
|
||||||
|
|
||||||
@@ -264,13 +259,10 @@ public class ChangeUtil {
|
|||||||
ChangeIdUtil.insertId(message, computedChangeId, true));
|
ChangeIdUtil.insertId(message, computedChangeId, true));
|
||||||
|
|
||||||
RevCommit revertCommit;
|
RevCommit revertCommit;
|
||||||
ObjectInserter oi = git.newObjectInserter();
|
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||||
try {
|
|
||||||
ObjectId id = oi.insert(revertCommitBuilder);
|
ObjectId id = oi.insert(revertCommitBuilder);
|
||||||
oi.flush();
|
oi.flush();
|
||||||
revertCommit = revWalk.parseCommit(id);
|
revertCommit = revWalk.parseCommit(id);
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RefControl refControl = ctl.getRefControl();
|
RefControl refControl = ctl.getRefControl();
|
||||||
@@ -334,11 +326,8 @@ public class ChangeUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return change.getId();
|
return change.getId();
|
||||||
} finally {
|
} catch (RepositoryNotFoundException e) {
|
||||||
revWalk.release();
|
throw new NoSuchChangeException(changeId, e);
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,15 +343,9 @@ public class ChangeUtil {
|
|||||||
"The commit message cannot be empty");
|
"The commit message cannot be empty");
|
||||||
}
|
}
|
||||||
|
|
||||||
Repository git;
|
Project.NameKey project = ctl.getChange().getProject();
|
||||||
try {
|
try (Repository git = gitManager.openRepository(project);
|
||||||
git = gitManager.openRepository(ctl.getChange().getProject());
|
RevWalk revWalk = new RevWalk(git)) {
|
||||||
} catch (RepositoryNotFoundException e) {
|
|
||||||
throw new NoSuchChangeException(changeId, e);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
RevWalk revWalk = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
RevCommit commit =
|
RevCommit commit =
|
||||||
revWalk.parseCommit(ObjectId.fromString(ps.getRevision()
|
revWalk.parseCommit(ObjectId.fromString(ps.getRevision()
|
||||||
.get()));
|
.get()));
|
||||||
@@ -383,13 +366,10 @@ public class ChangeUtil {
|
|||||||
commitBuilder.setMessage(message);
|
commitBuilder.setMessage(message);
|
||||||
|
|
||||||
RevCommit newCommit;
|
RevCommit newCommit;
|
||||||
ObjectInserter oi = git.newObjectInserter();
|
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||||
try {
|
|
||||||
ObjectId id = oi.insert(commitBuilder);
|
ObjectId id = oi.insert(commitBuilder);
|
||||||
oi.flush();
|
oi.flush();
|
||||||
newCommit = revWalk.parseCommit(id);
|
newCommit = revWalk.parseCommit(id);
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PatchSet.Id id = nextPatchSetId(git, change.currentPatchSetId());
|
PatchSet.Id id = nextPatchSetId(git, change.currentPatchSetId());
|
||||||
@@ -410,11 +390,8 @@ public class ChangeUtil {
|
|||||||
.insert();
|
.insert();
|
||||||
|
|
||||||
return change.getId();
|
return change.getId();
|
||||||
} finally {
|
} catch (RepositoryNotFoundException e) {
|
||||||
revWalk.release();
|
throw new NoSuchChangeException(changeId, e);
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,25 +404,14 @@ public class ChangeUtil {
|
|||||||
throw new NoSuchChangeException(changeId);
|
throw new NoSuchChangeException(changeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
Repository git;
|
try (Repository git = gitManager.openRepository(change.getProject());
|
||||||
try {
|
RevWalk revWalk = new RevWalk(git)) {
|
||||||
git = gitManager.openRepository(change.getProject());
|
RevCommit commit = revWalk.parseCommit(
|
||||||
|
ObjectId.fromString(ps.getRevision().get()));
|
||||||
|
return commit.getFullMessage();
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (RepositoryNotFoundException e) {
|
||||||
throw new NoSuchChangeException(changeId, e);
|
throw new NoSuchChangeException(changeId, e);
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
RevWalk revWalk = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
RevCommit commit =
|
|
||||||
revWalk.parseCommit(ObjectId.fromString(ps.getRevision()
|
|
||||||
.get()));
|
|
||||||
return commit.getFullMessage();
|
|
||||||
} finally {
|
|
||||||
revWalk.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteDraftChange(Change change)
|
public void deleteDraftChange(Change change)
|
||||||
|
@@ -189,8 +189,7 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
|
|||||||
return ChangeKind.NO_CODE_CHANGE;
|
return ChangeKind.NO_CODE_CHANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RevWalk walk = new RevWalk(key.repo);
|
try (RevWalk walk = new RevWalk(key.repo)) {
|
||||||
try {
|
|
||||||
RevCommit prior = walk.parseCommit(key.prior);
|
RevCommit prior = walk.parseCommit(key.prior);
|
||||||
walk.parseBody(prior);
|
walk.parseBody(prior);
|
||||||
RevCommit next = walk.parseCommit(key.next);
|
RevCommit next = walk.parseCommit(key.next);
|
||||||
@@ -227,7 +226,6 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
|
|||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
key.repo = null;
|
key.repo = null;
|
||||||
walk.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -121,16 +121,8 @@ public class CherryPickChange {
|
|||||||
|
|
||||||
Project.NameKey project = change.getProject();
|
Project.NameKey project = change.getProject();
|
||||||
IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get();
|
IdentifiedUser identifiedUser = (IdentifiedUser) currentUser.get();
|
||||||
final Repository git;
|
try (Repository git = gitManager.openRepository(project);
|
||||||
try {
|
RevWalk revWalk = new RevWalk(git)) {
|
||||||
git = gitManager.openRepository(project);
|
|
||||||
} catch (RepositoryNotFoundException e) {
|
|
||||||
throw new NoSuchChangeException(change.getId(), e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
RevWalk revWalk = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
Ref destRef = git.getRef(destinationBranch);
|
Ref destRef = git.getRef(destinationBranch);
|
||||||
if (destRef == null) {
|
if (destRef == null) {
|
||||||
throw new InvalidChangeOperationException("Branch "
|
throw new InvalidChangeOperationException("Branch "
|
||||||
@@ -154,16 +146,13 @@ public class CherryPickChange {
|
|||||||
ChangeIdUtil.insertId(message, computedChangeId).trim() + '\n';
|
ChangeIdUtil.insertId(message, computedChangeId).trim() + '\n';
|
||||||
|
|
||||||
RevCommit cherryPickCommit;
|
RevCommit cherryPickCommit;
|
||||||
ObjectInserter oi = git.newObjectInserter();
|
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||||
try {
|
|
||||||
ProjectState projectState = refControl.getProjectControl().getProjectState();
|
ProjectState projectState = refControl.getProjectControl().getProjectState();
|
||||||
cherryPickCommit =
|
cherryPickCommit =
|
||||||
mergeUtilFactory.create(projectState).createCherryPickFromCommit(git, oi, mergeTip,
|
mergeUtilFactory.create(projectState).createCherryPickFromCommit(git, oi, mergeTip,
|
||||||
commitToCherryPick, committerIdent, commitMessage, revWalk);
|
commitToCherryPick, committerIdent, commitMessage, revWalk);
|
||||||
} catch (MergeIdenticalTreeException | MergeConflictException e) {
|
} catch (MergeIdenticalTreeException | MergeConflictException e) {
|
||||||
throw new MergeException("Cherry pick failed: " + e.getMessage());
|
throw new MergeException("Cherry pick failed: " + e.getMessage());
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Change.Key changeKey;
|
Change.Key changeKey;
|
||||||
@@ -205,11 +194,8 @@ public class CherryPickChange {
|
|||||||
|
|
||||||
return newChange.getId();
|
return newChange.getId();
|
||||||
}
|
}
|
||||||
} finally {
|
} catch (RepositoryNotFoundException e) {
|
||||||
revWalk.release();
|
throw new NoSuchChangeException(change.getId(), e);
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -153,7 +153,7 @@ public class ConsistencyChecker {
|
|||||||
return Result.create(c, problems);
|
return Result.create(c, problems);
|
||||||
} finally {
|
} finally {
|
||||||
if (rw != null) {
|
if (rw != null) {
|
||||||
rw.release();
|
rw.close();
|
||||||
}
|
}
|
||||||
if (repo != null) {
|
if (repo != null) {
|
||||||
repo.close();
|
repo.close();
|
||||||
|
@@ -158,11 +158,8 @@ public class CreateChange implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
Project.NameKey project = rsrc.getNameKey();
|
Project.NameKey project = rsrc.getNameKey();
|
||||||
Repository git = gitManager.openRepository(project);
|
try (Repository git = gitManager.openRepository(project);
|
||||||
|
RevWalk rw = new RevWalk(git)) {
|
||||||
try {
|
|
||||||
RevWalk rw = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
ObjectId parentCommit;
|
ObjectId parentCommit;
|
||||||
if (input.baseChange != null) {
|
if (input.baseChange != null) {
|
||||||
List<Change> changes = changeUtil.findChanges(input.baseChange);
|
List<Change> changes = changeUtil.findChanges(input.baseChange);
|
||||||
@@ -218,11 +215,6 @@ public class CreateChange implements
|
|||||||
ins.insert();
|
ins.insert();
|
||||||
|
|
||||||
return Response.created(json.format(change.getId()));
|
return Response.created(json.format(change.getId()));
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -275,8 +267,7 @@ public class CreateChange implements
|
|||||||
PersonIdent authorIdent, RevCommit mergeTip, String commitMessage)
|
PersonIdent authorIdent, RevCommit mergeTip, String commitMessage)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
RevCommit emptyCommit;
|
RevCommit emptyCommit;
|
||||||
ObjectInserter oi = git.newObjectInserter();
|
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||||
try {
|
|
||||||
CommitBuilder commit = new CommitBuilder();
|
CommitBuilder commit = new CommitBuilder();
|
||||||
commit.setTreeId(mergeTip.getTree().getId());
|
commit.setTreeId(mergeTip.getTree().getId());
|
||||||
commit.setParentId(mergeTip);
|
commit.setParentId(mergeTip);
|
||||||
@@ -284,8 +275,6 @@ public class CreateChange implements
|
|||||||
commit.setCommitter(authorIdent);
|
commit.setCommitter(authorIdent);
|
||||||
commit.setMessage(commitMessage);
|
commit.setMessage(commitMessage);
|
||||||
emptyCommit = rw.parseCommit(insert(oi, commit));
|
emptyCommit = rw.parseCommit(insert(oi, commit));
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
return emptyCommit;
|
return emptyCommit;
|
||||||
}
|
}
|
||||||
|
@@ -58,10 +58,8 @@ public class FileContentUtil {
|
|||||||
|
|
||||||
public BinaryResult getContent(ProjectState project, ObjectId revstr,
|
public BinaryResult getContent(ProjectState project, ObjectId revstr,
|
||||||
String path) throws ResourceNotFoundException, IOException {
|
String path) throws ResourceNotFoundException, IOException {
|
||||||
Repository repo = openRepository(project);
|
try (Repository repo = openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
RevCommit commit = rw.parseCommit(revstr);
|
RevCommit commit = rw.parseCommit(revstr);
|
||||||
ObjectReader reader = rw.getObjectReader();
|
ObjectReader reader = rw.getObjectReader();
|
||||||
TreeWalk tw = TreeWalk.forPath(reader, path, commit.getTree());
|
TreeWalk tw = TreeWalk.forPath(reader, path, commit.getTree());
|
||||||
@@ -100,22 +98,17 @@ public class FileContentUtil {
|
|||||||
type = resolveContentType(project, path, FileMode.FILE, type);
|
type = resolveContentType(project, path, FileMode.FILE, type);
|
||||||
}
|
}
|
||||||
return result.setContentType(type).base64();
|
return result.setContentType(type).base64();
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BinaryResult asBinaryResult(final ObjectLoader obj) {
|
private static BinaryResult asBinaryResult(final ObjectLoader obj) {
|
||||||
@SuppressWarnings("resource")
|
|
||||||
BinaryResult result = new BinaryResult() {
|
BinaryResult result = new BinaryResult() {
|
||||||
@Override
|
@Override
|
||||||
public void writeTo(OutputStream os) throws IOException {
|
public void writeTo(OutputStream os) throws IOException {
|
||||||
obj.copyTo(os);
|
obj.copyTo(os);
|
||||||
}
|
}
|
||||||
}.setContentLength(obj.getSize());
|
};
|
||||||
|
result.setContentLength(obj.getSize());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ import com.google.gerrit.reviewdb.client.Account;
|
|||||||
import com.google.gerrit.reviewdb.client.AccountPatchReview;
|
import com.google.gerrit.reviewdb.client.AccountPatchReview;
|
||||||
import com.google.gerrit.reviewdb.client.Patch;
|
import com.google.gerrit.reviewdb.client.Patch;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
|
import com.google.gerrit.reviewdb.client.Project;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
@@ -178,14 +179,13 @@ public class Files implements ChildCollection<RevisionResource, FileResource> {
|
|||||||
|
|
||||||
private List<String> query(RevisionResource resource)
|
private List<String> query(RevisionResource resource)
|
||||||
throws RepositoryNotFoundException, IOException {
|
throws RepositoryNotFoundException, IOException {
|
||||||
Repository git =
|
Project.NameKey project = resource.getChange().getProject();
|
||||||
gitManager.openRepository(resource.getChange().getProject());
|
try (Repository git = gitManager.openRepository(project);
|
||||||
try {
|
ObjectReader or = git.newObjectReader();
|
||||||
TreeWalk tw = new TreeWalk(git);
|
RevWalk rw = new RevWalk(or);
|
||||||
try {
|
TreeWalk tw = new TreeWalk(or)) {
|
||||||
RevCommit c = new RevWalk(tw.getObjectReader())
|
RevCommit c = rw.parseCommit(
|
||||||
.parseCommit(ObjectId.fromString(
|
ObjectId.fromString(resource.getPatchSet().getRevision().get()));
|
||||||
resource.getPatchSet().getRevision().get()));
|
|
||||||
|
|
||||||
tw.addTree(c.getTree());
|
tw.addTree(c.getTree());
|
||||||
tw.setRecursive(true);
|
tw.setRecursive(true);
|
||||||
@@ -197,11 +197,6 @@ public class Files implements ChildCollection<RevisionResource, FileResource> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return paths;
|
return paths;
|
||||||
} finally {
|
|
||||||
tw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,11 +256,11 @@ public class Files implements ChildCollection<RevisionResource, FileResource> {
|
|||||||
private List<String> copy(Set<String> paths, PatchSet.Id old,
|
private List<String> copy(Set<String> paths, PatchSet.Id old,
|
||||||
RevisionResource resource, Account.Id userId) throws IOException,
|
RevisionResource resource, Account.Id userId) throws IOException,
|
||||||
PatchListNotAvailableException, OrmException {
|
PatchListNotAvailableException, OrmException {
|
||||||
Repository git =
|
Project.NameKey project = resource.getChange().getProject();
|
||||||
gitManager.openRepository(resource.getChange().getProject());
|
try (Repository git = gitManager.openRepository(project);
|
||||||
try {
|
|
||||||
ObjectReader reader = git.newObjectReader();
|
ObjectReader reader = git.newObjectReader();
|
||||||
try {
|
RevWalk rw = new RevWalk(reader);
|
||||||
|
TreeWalk tw = new TreeWalk(reader)) {
|
||||||
PatchList oldList = patchListCache.get(
|
PatchList oldList = patchListCache.get(
|
||||||
resource.getChange(),
|
resource.getChange(),
|
||||||
db.get().patchSets().get(old));
|
db.get().patchSets().get(old));
|
||||||
@@ -278,8 +273,6 @@ public class Files implements ChildCollection<RevisionResource, FileResource> {
|
|||||||
List<AccountPatchReview> inserts = Lists.newArrayListWithCapacity(sz);
|
List<AccountPatchReview> inserts = Lists.newArrayListWithCapacity(sz);
|
||||||
List<String> pathList = Lists.newArrayListWithCapacity(sz);
|
List<String> pathList = Lists.newArrayListWithCapacity(sz);
|
||||||
|
|
||||||
RevWalk rw = new RevWalk(reader);
|
|
||||||
TreeWalk tw = new TreeWalk(reader);
|
|
||||||
tw.setFilter(PathFilterGroup.createFromStrings(paths));
|
tw.setFilter(PathFilterGroup.createFromStrings(paths));
|
||||||
tw.setRecursive(true);
|
tw.setRecursive(true);
|
||||||
int o = tw.addTree(rw.parseCommit(oldList.getNewId()).getTree());
|
int o = tw.addTree(rw.parseCommit(oldList.getNewId()).getTree());
|
||||||
@@ -326,11 +319,6 @@ public class Files implements ChildCollection<RevisionResource, FileResource> {
|
|||||||
}
|
}
|
||||||
db.get().accountPatchReviews().insert(inserts);
|
db.get().accountPatchReviews().insert(inserts);
|
||||||
return pathList;
|
return pathList;
|
||||||
} finally {
|
|
||||||
reader.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,7 +126,7 @@ public class GetArchive implements RestReadView<RevisionResource> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
rw.release();
|
rw.close();
|
||||||
repo.close();
|
repo.close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -139,7 +139,7 @@ public class GetArchive implements RestReadView<RevisionResource> {
|
|||||||
return bin;
|
return bin;
|
||||||
} finally {
|
} finally {
|
||||||
if (close) {
|
if (close) {
|
||||||
rw.release();
|
rw.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
@@ -94,15 +94,16 @@ public class GetPatch implements RestReadView<RevisionResource> {
|
|||||||
|
|
||||||
private void format(OutputStream out) throws IOException {
|
private void format(OutputStream out) throws IOException {
|
||||||
out.write(formatEmailHeader(commit).getBytes(UTF_8));
|
out.write(formatEmailHeader(commit).getBytes(UTF_8));
|
||||||
DiffFormatter fmt = new DiffFormatter(out);
|
try (DiffFormatter fmt = new DiffFormatter(out)) {
|
||||||
fmt.setRepository(repo);
|
fmt.setRepository(repo);
|
||||||
fmt.format(base.getTree(), commit.getTree());
|
fmt.format(base.getTree(), commit.getTree());
|
||||||
fmt.flush();
|
fmt.flush();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
rw.release();
|
rw.close();
|
||||||
repo.close();
|
repo.close();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -123,7 +124,7 @@ public class GetPatch implements RestReadView<RevisionResource> {
|
|||||||
return bin;
|
return bin;
|
||||||
} finally {
|
} finally {
|
||||||
if (close) {
|
if (close) {
|
||||||
rw.release();
|
rw.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
@@ -80,19 +80,12 @@ public class GetRelated implements RestReadView<RevisionResource> {
|
|||||||
@Override
|
@Override
|
||||||
public RelatedInfo apply(RevisionResource rsrc)
|
public RelatedInfo apply(RevisionResource rsrc)
|
||||||
throws RepositoryNotFoundException, IOException, OrmException {
|
throws RepositoryNotFoundException, IOException, OrmException {
|
||||||
Repository git = gitMgr.openRepository(rsrc.getChange().getProject());
|
try (Repository git = gitMgr.openRepository(rsrc.getChange().getProject());
|
||||||
try {
|
RevWalk rw = new RevWalk(git)) {
|
||||||
Ref ref = git.getRef(rsrc.getChange().getDest().get());
|
Ref ref = git.getRef(rsrc.getChange().getDest().get());
|
||||||
RevWalk rw = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
RelatedInfo info = new RelatedInfo();
|
RelatedInfo info = new RelatedInfo();
|
||||||
info.changes = walk(rsrc, rw, ref);
|
info.changes = walk(rsrc, rw, ref);
|
||||||
return info;
|
return info;
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ import com.google.gerrit.extensions.restapi.BadRequestException;
|
|||||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||||
import com.google.gerrit.extensions.restapi.RestReadView;
|
import com.google.gerrit.extensions.restapi.RestReadView;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
|
import com.google.gerrit.reviewdb.client.Project;
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
@@ -55,11 +56,9 @@ class IncludedIn implements RestReadView<ChangeResource> {
|
|||||||
ChangeControl ctl = rsrc.getControl();
|
ChangeControl ctl = rsrc.getControl();
|
||||||
PatchSet ps =
|
PatchSet ps =
|
||||||
db.get().patchSets().get(ctl.getChange().currentPatchSetId());
|
db.get().patchSets().get(ctl.getChange().currentPatchSetId());
|
||||||
Repository r =
|
Project.NameKey project = ctl.getProject().getNameKey();
|
||||||
repoManager.openRepository(ctl.getProject().getNameKey());
|
try (Repository r = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk rw = new RevWalk(r)) {
|
||||||
RevWalk rw = new RevWalk(r);
|
|
||||||
try {
|
|
||||||
rw.setRetainBody(false);
|
rw.setRetainBody(false);
|
||||||
RevCommit rev;
|
RevCommit rev;
|
||||||
try {
|
try {
|
||||||
@@ -70,11 +69,6 @@ class IncludedIn implements RestReadView<ChangeResource> {
|
|||||||
throw new ResourceConflictException(err.getMessage());
|
throw new ResourceConflictException(err.getMessage());
|
||||||
}
|
}
|
||||||
return new IncludedInInfo(IncludedInResolver.resolve(r, rw, rev));
|
return new IncludedInInfo(IncludedInResolver.resolve(r, rw, rev));
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
r.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -225,8 +225,7 @@ public class MergeabilityCacheImpl implements MergeabilityCache {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Map<String, Ref> refs = key.load.repo.getAllRefs();
|
Map<String, Ref> refs = key.load.repo.getAllRefs();
|
||||||
RevWalk rw = CodeReviewCommit.newRevWalk(key.load.repo);
|
try (RevWalk rw = CodeReviewCommit.newRevWalk(key.load.repo)) {
|
||||||
try {
|
|
||||||
RevFlag canMerge = rw.newFlag("CAN_MERGE");
|
RevFlag canMerge = rw.newFlag("CAN_MERGE");
|
||||||
CodeReviewCommit rev = parse(rw, key.commit);
|
CodeReviewCommit rev = parse(rw, key.commit);
|
||||||
rev.add(canMerge);
|
rev.add(canMerge);
|
||||||
@@ -243,8 +242,6 @@ public class MergeabilityCacheImpl implements MergeabilityCache {
|
|||||||
canMerge,
|
canMerge,
|
||||||
accepted,
|
accepted,
|
||||||
key.load.dest).dryRun(tip, rev);
|
key.load.dest).dryRun(tip, rev);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
key.load = null;
|
key.load = null;
|
||||||
|
@@ -119,14 +119,9 @@ public class RebaseChange {
|
|||||||
"Cannot rebase: New patch sets are not allowed to be added to change: "
|
"Cannot rebase: New patch sets are not allowed to be added to change: "
|
||||||
+ changeId.toString());
|
+ changeId.toString());
|
||||||
}
|
}
|
||||||
Repository git = null;
|
try (Repository git = gitManager.openRepository(change.getProject());
|
||||||
RevWalk rw = null;
|
RevWalk rw = new RevWalk(git);
|
||||||
ObjectInserter inserter = null;
|
ObjectInserter inserter = git.newObjectInserter()) {
|
||||||
try {
|
|
||||||
git = gitManager.openRepository(change.getProject());
|
|
||||||
rw = new RevWalk(git);
|
|
||||||
inserter = git.newObjectInserter();
|
|
||||||
|
|
||||||
String baseRev = newBaseRev;
|
String baseRev = newBaseRev;
|
||||||
if (baseRev == null) {
|
if (baseRev == null) {
|
||||||
baseRev = findBaseRevision(patchSetId, db.get(),
|
baseRev = findBaseRevision(patchSetId, db.get(),
|
||||||
@@ -149,16 +144,6 @@ public class RebaseChange {
|
|||||||
committerIdent, true, ValidatePolicy.GERRIT);
|
committerIdent, true, ValidatePolicy.GERRIT);
|
||||||
} catch (MergeConflictException e) {
|
} catch (MergeConflictException e) {
|
||||||
throw new IOException(e.getMessage());
|
throw new IOException(e.getMessage());
|
||||||
} finally {
|
|
||||||
if (inserter != null) {
|
|
||||||
inserter.release();
|
|
||||||
}
|
|
||||||
if (rw != null) {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
if (git != null) {
|
|
||||||
git.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@ import com.google.gerrit.extensions.restapi.RawInput;
|
|||||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||||
import com.google.gerrit.reviewdb.client.Change;
|
import com.google.gerrit.reviewdb.client.Change;
|
||||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||||
|
import com.google.gerrit.reviewdb.client.Project;
|
||||||
import com.google.gerrit.server.CurrentUser;
|
import com.google.gerrit.server.CurrentUser;
|
||||||
import com.google.gerrit.server.GerritPersonIdent;
|
import com.google.gerrit.server.GerritPersonIdent;
|
||||||
import com.google.gerrit.server.IdentifiedUser;
|
import com.google.gerrit.server.IdentifiedUser;
|
||||||
@@ -115,26 +116,20 @@ public class ChangeEditModifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
||||||
Repository repo = gitManager.openRepository(change.getProject());
|
|
||||||
String refPrefix = editRefPrefix(me.getAccountId(), change.getId());
|
String refPrefix = editRefPrefix(me.getAccountId(), change.getId());
|
||||||
|
|
||||||
try {
|
try (Repository repo = gitManager.openRepository(change.getProject())) {
|
||||||
Map<String, Ref> refs = repo.getRefDatabase().getRefs(refPrefix);
|
Map<String, Ref> refs = repo.getRefDatabase().getRefs(refPrefix);
|
||||||
if (!refs.isEmpty()) {
|
if (!refs.isEmpty()) {
|
||||||
throw new ResourceConflictException("edit already exists");
|
throw new ResourceConflictException("edit already exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
ObjectId revision = ObjectId.fromString(ps.getRevision().get());
|
ObjectId revision = ObjectId.fromString(ps.getRevision().get());
|
||||||
String editRefName = editRefName(me.getAccountId(), change.getId(),
|
String editRefName = editRefName(me.getAccountId(), change.getId(),
|
||||||
ps.getId());
|
ps.getId());
|
||||||
return update(repo, me, editRefName, rw, ObjectId.zeroId(), revision);
|
return update(repo, me, editRefName, rw, ObjectId.zeroId(), revision);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,12 +154,10 @@ public class ChangeEditModifier {
|
|||||||
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
||||||
String refName = editRefName(me.getAccountId(), change.getId(),
|
String refName = editRefName(me.getAccountId(), change.getId(),
|
||||||
current.getId());
|
current.getId());
|
||||||
Repository repo = gitManager.openRepository(change.getProject());
|
try (Repository repo = gitManager.openRepository(change.getProject());
|
||||||
try {
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
RevWalk rw = new RevWalk(repo);
|
||||||
|
ObjectInserter inserter = repo.newObjectInserter()) {
|
||||||
BatchRefUpdate ru = repo.getRefDatabase().newBatchUpdate();
|
BatchRefUpdate ru = repo.getRefDatabase().newBatchUpdate();
|
||||||
ObjectInserter inserter = repo.newObjectInserter();
|
|
||||||
try {
|
|
||||||
RevCommit editCommit = edit.getEditCommit();
|
RevCommit editCommit = edit.getEditCommit();
|
||||||
if (editCommit.getParentCount() == 0) {
|
if (editCommit.getParentCount() == 0) {
|
||||||
throw new InvalidChangeOperationException(
|
throw new InvalidChangeOperationException(
|
||||||
@@ -206,12 +199,6 @@ public class ChangeEditModifier {
|
|||||||
// TODO(davido): Allow to resolve conflicts inline
|
// TODO(davido): Allow to resolve conflicts inline
|
||||||
throw new ResourceConflictException("merge conflict");
|
throw new ResourceConflictException("merge conflict");
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
inserter.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,23 +227,16 @@ public class ChangeEditModifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
||||||
Repository repo = gitManager.openRepository(edit.getChange().getProject());
|
Project.NameKey project = edit.getChange().getProject();
|
||||||
try {
|
try (Repository repo = gitManager.openRepository(project);
|
||||||
RevWalk rw = new RevWalk(repo);
|
RevWalk rw = new RevWalk(repo);
|
||||||
ObjectInserter inserter = repo.newObjectInserter();
|
ObjectInserter inserter = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
String refName = edit.getRefName();
|
String refName = edit.getRefName();
|
||||||
ObjectId commit = createCommit(me, inserter, prevEdit,
|
ObjectId commit = createCommit(me, inserter, prevEdit,
|
||||||
prevEdit.getTree(),
|
prevEdit.getTree(),
|
||||||
msg);
|
msg);
|
||||||
inserter.flush();
|
inserter.flush();
|
||||||
return update(repo, me, refName, rw, prevEdit, commit);
|
return update(repo, me, refName, rw, prevEdit, commit);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
inserter.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,12 +313,11 @@ public class ChangeEditModifier {
|
|||||||
throw new AuthException("Authentication required");
|
throw new AuthException("Authentication required");
|
||||||
}
|
}
|
||||||
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
IdentifiedUser me = (IdentifiedUser) currentUser.get();
|
||||||
Repository repo = gitManager.openRepository(edit.getChange().getProject());
|
Project.NameKey project = edit.getChange().getProject();
|
||||||
try {
|
try (Repository repo = gitManager.openRepository(project);
|
||||||
RevWalk rw = new RevWalk(repo);
|
RevWalk rw = new RevWalk(repo);
|
||||||
ObjectInserter inserter = repo.newObjectInserter();
|
ObjectInserter inserter = repo.newObjectInserter();
|
||||||
ObjectReader reader = repo.newObjectReader();
|
ObjectReader reader = repo.newObjectReader()) {
|
||||||
try {
|
|
||||||
String refName = edit.getRefName();
|
String refName = edit.getRefName();
|
||||||
RevCommit prevEdit = edit.getEditCommit();
|
RevCommit prevEdit = edit.getEditCommit();
|
||||||
ObjectId newTree = writeNewTree(op,
|
ObjectId newTree = writeNewTree(op,
|
||||||
@@ -356,13 +335,6 @@ public class ChangeEditModifier {
|
|||||||
ObjectId commit = createCommit(me, inserter, prevEdit, newTree);
|
ObjectId commit = createCommit(me, inserter, prevEdit, newTree);
|
||||||
inserter.flush();
|
inserter.flush();
|
||||||
return update(repo, me, refName, rw, prevEdit, commit);
|
return update(repo, me, refName, rw, prevEdit, commit);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
inserter.release();
|
|
||||||
reader.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -109,8 +109,7 @@ public class ChangeEditUtil {
|
|||||||
*/
|
*/
|
||||||
public Optional<ChangeEdit> byChange(Change change, IdentifiedUser user)
|
public Optional<ChangeEdit> byChange(Change change, IdentifiedUser user)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
Repository repo = gitManager.openRepository(change.getProject());
|
try (Repository repo = gitManager.openRepository(change.getProject())) {
|
||||||
try {
|
|
||||||
String editRefPrefix = editRefPrefix(user.getAccountId(), change.getId());
|
String editRefPrefix = editRefPrefix(user.getAccountId(), change.getId());
|
||||||
Map<String, Ref> refs = repo.getRefDatabase().getRefs(editRefPrefix);
|
Map<String, Ref> refs = repo.getRefDatabase().getRefs(editRefPrefix);
|
||||||
if (refs.isEmpty()) {
|
if (refs.isEmpty()) {
|
||||||
@@ -121,16 +120,11 @@ public class ChangeEditUtil {
|
|||||||
// where there is more than one ref, we could silently delete all but the
|
// where there is more than one ref, we could silently delete all but the
|
||||||
// current one.
|
// current one.
|
||||||
Ref ref = Iterables.getOnlyElement(refs.values());
|
Ref ref = Iterables.getOnlyElement(refs.values());
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
RevCommit commit = rw.parseCommit(ref.getObjectId());
|
RevCommit commit = rw.parseCommit(ref.getObjectId());
|
||||||
PatchSet basePs = getBasePatchSet(change, ref);
|
PatchSet basePs = getBasePatchSet(change, ref);
|
||||||
return Optional.of(new ChangeEdit(user, change, ref, commit, basePs));
|
return Optional.of(new ChangeEdit(user, change, ref, commit, basePs));
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,12 +144,9 @@ public class ChangeEditUtil {
|
|||||||
NoSuchChangeException, IOException, InvalidChangeOperationException,
|
NoSuchChangeException, IOException, InvalidChangeOperationException,
|
||||||
OrmException, ResourceConflictException {
|
OrmException, ResourceConflictException {
|
||||||
Change change = edit.getChange();
|
Change change = edit.getChange();
|
||||||
Repository repo = gitManager.openRepository(change.getProject());
|
try (Repository repo = gitManager.openRepository(change.getProject());
|
||||||
try {
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
RevWalk rw = new RevWalk(repo);
|
||||||
ObjectInserter inserter = repo.newObjectInserter();
|
ObjectInserter inserter = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
|
|
||||||
PatchSet basePatchSet = edit.getBasePatchSet();
|
PatchSet basePatchSet = edit.getBasePatchSet();
|
||||||
if (!basePatchSet.getId().equals(change.currentPatchSetId())) {
|
if (!basePatchSet.getId().equals(change.currentPatchSetId())) {
|
||||||
throw new ResourceConflictException(
|
throw new ResourceConflictException(
|
||||||
@@ -164,15 +155,8 @@ public class ChangeEditUtil {
|
|||||||
|
|
||||||
insertPatchSet(edit, change, repo, rw, basePatchSet,
|
insertPatchSet(edit, change, repo, rw, basePatchSet,
|
||||||
squashEdit(rw, inserter, edit.getEditCommit(), basePatchSet));
|
squashEdit(rw, inserter, edit.getEditCommit(), basePatchSet));
|
||||||
} finally {
|
|
||||||
inserter.release();
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(davido): This should happen in the same BatchRefUpdate.
|
// TODO(davido): This should happen in the same BatchRefUpdate.
|
||||||
deleteRef(repo, edit);
|
deleteRef(repo, edit);
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -101,11 +101,9 @@ public class BanCommit {
|
|||||||
NoteMap banCommitNotes = NoteMap.newEmptyMap();
|
NoteMap banCommitNotes = NoteMap.newEmptyMap();
|
||||||
// Add a note for each banned commit to notes.
|
// Add a note for each banned commit to notes.
|
||||||
final Project.NameKey project = projectControl.getProject().getNameKey();
|
final Project.NameKey project = projectControl.getProject().getNameKey();
|
||||||
final Repository repo = repoManager.openRepository(project);
|
try (Repository repo = repoManager.openRepository(project);
|
||||||
try {
|
RevWalk revWalk = new RevWalk(repo);
|
||||||
final RevWalk revWalk = new RevWalk(repo);
|
ObjectInserter inserter = repo.newObjectInserter()) {
|
||||||
final ObjectInserter inserter = repo.newObjectInserter();
|
|
||||||
try {
|
|
||||||
ObjectId noteId = null;
|
ObjectId noteId = null;
|
||||||
for (final ObjectId commitToBan : commitsToBan) {
|
for (final ObjectId commitToBan : commitsToBan) {
|
||||||
try {
|
try {
|
||||||
@@ -135,12 +133,6 @@ public class BanCommit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
} finally {
|
|
||||||
revWalk.release();
|
|
||||||
inserter.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -332,10 +332,10 @@ public class MergeOp {
|
|||||||
throw new MergeException("Cannot query the database", e);
|
throw new MergeException("Cannot query the database", e);
|
||||||
} finally {
|
} finally {
|
||||||
if (inserter != null) {
|
if (inserter != null) {
|
||||||
inserter.release();
|
inserter.close();
|
||||||
}
|
}
|
||||||
if (rw != null) {
|
if (rw != null) {
|
||||||
rw.release();
|
rw.close();
|
||||||
}
|
}
|
||||||
if (repo != null) {
|
if (repo != null) {
|
||||||
repo.close();
|
repo.close();
|
||||||
|
@@ -153,8 +153,8 @@ public class NotesBranchUtil {
|
|||||||
}
|
}
|
||||||
updateRef(notesBranch);
|
updateRef(notesBranch);
|
||||||
} finally {
|
} finally {
|
||||||
revWalk.release();
|
revWalk.close();
|
||||||
reader.release();
|
reader.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -382,7 +382,7 @@ public class SubmoduleOp {
|
|||||||
+ subscriber.get(), e);
|
+ subscriber.get(), e);
|
||||||
} finally {
|
} finally {
|
||||||
if (recRw != null) {
|
if (recRw != null) {
|
||||||
recRw.release();
|
recRw.close();
|
||||||
}
|
}
|
||||||
if (pdb != null) {
|
if (pdb != null) {
|
||||||
pdb.close();
|
pdb.close();
|
||||||
@@ -392,8 +392,7 @@ public class SubmoduleOp {
|
|||||||
|
|
||||||
private static DirCache readTree(final Repository pdb, final Ref branch)
|
private static DirCache readTree(final Repository pdb, final Ref branch)
|
||||||
throws MissingObjectException, IncorrectObjectTypeException, IOException {
|
throws MissingObjectException, IncorrectObjectTypeException, IOException {
|
||||||
final RevWalk rw = new RevWalk(pdb);
|
try (RevWalk rw = new RevWalk(pdb)) {
|
||||||
try {
|
|
||||||
final DirCache dc = DirCache.newInCore();
|
final DirCache dc = DirCache.newInCore();
|
||||||
final DirCacheBuilder b = dc.builder();
|
final DirCacheBuilder b = dc.builder();
|
||||||
b.addTree(new byte[0], // no prefix path
|
b.addTree(new byte[0], // no prefix path
|
||||||
@@ -401,8 +400,6 @@ public class SubmoduleOp {
|
|||||||
pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
|
pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
|
||||||
b.finish();
|
b.finish();
|
||||||
return dc;
|
return dc;
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -147,7 +147,7 @@ class TagSet {
|
|||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if (rw != null) {
|
if (rw != null) {
|
||||||
rw.release();
|
rw.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -157,9 +157,8 @@ class TagSet {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TagWalk rw = new TagWalk(git);
|
try (TagWalk rw = new TagWalk(git)) {
|
||||||
rw.setRetainBody(false);
|
rw.setRetainBody(false);
|
||||||
try {
|
|
||||||
for (Ref ref : git.getRefDatabase().getRefs(RefDatabase.ALL).values()) {
|
for (Ref ref : git.getRefDatabase().getRefs(RefDatabase.ALL).values()) {
|
||||||
if (skip(ref)) {
|
if (skip(ref)) {
|
||||||
continue;
|
continue;
|
||||||
@@ -188,8 +187,6 @@ class TagSet {
|
|||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.warn("Error building tags for repository " + projectName, e);
|
log.warn("Error building tags for repository " + projectName, e);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -122,7 +122,7 @@ public abstract class VersionedMetaData {
|
|||||||
revision = id != null ? new RevWalk(reader).parseCommit(id) : null;
|
revision = id != null ? new RevWalk(reader).parseCommit(id) : null;
|
||||||
onLoad();
|
onLoad();
|
||||||
} finally {
|
} finally {
|
||||||
reader.release();
|
reader.close();
|
||||||
reader = null;
|
reader = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,13 +319,14 @@ public abstract class VersionedMetaData {
|
|||||||
public void close() {
|
public void close() {
|
||||||
newTree = null;
|
newTree = null;
|
||||||
|
|
||||||
|
rw.close();
|
||||||
if (inserter != null) {
|
if (inserter != null) {
|
||||||
inserter.release();
|
inserter.close();
|
||||||
inserter = null;
|
inserter = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reader != null) {
|
if (reader != null) {
|
||||||
reader.release();
|
reader.close();
|
||||||
reader = null;
|
reader = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -323,19 +323,17 @@ public class SiteIndexer {
|
|||||||
getPathsAndIndex(id);
|
getPathsAndIndex(id);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
walk.release();
|
walk.close();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getPathsAndIndex(ObjectId b) throws Exception {
|
private void getPathsAndIndex(ObjectId b) throws Exception {
|
||||||
List<ChangeData> cds = Lists.newArrayList(byId.get(b));
|
List<ChangeData> cds = Lists.newArrayList(byId.get(b));
|
||||||
try {
|
try (DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE)) {
|
||||||
RevCommit bCommit = walk.parseCommit(b);
|
RevCommit bCommit = walk.parseCommit(b);
|
||||||
RevTree bTree = bCommit.getTree();
|
RevTree bTree = bCommit.getTree();
|
||||||
RevTree aTree = aFor(bCommit, walk);
|
RevTree aTree = aFor(bCommit, walk);
|
||||||
DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE);
|
|
||||||
try {
|
|
||||||
df.setRepository(repo);
|
df.setRepository(repo);
|
||||||
if (!cds.isEmpty()) {
|
if (!cds.isEmpty()) {
|
||||||
List<String> paths = (aTree != null)
|
List<String> paths = (aTree != null)
|
||||||
@@ -356,9 +354,6 @@ public class SiteIndexer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
df.release();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
fail("Failed to index commit " + b.name(), false, e);
|
fail("Failed to index commit " + b.name(), false, e);
|
||||||
for (ChangeData cd : cds) {
|
for (ChangeData cd : cds) {
|
||||||
@@ -396,13 +391,10 @@ public class SiteIndexer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ObjectId emptyTree() throws IOException {
|
private ObjectId emptyTree() throws IOException {
|
||||||
ObjectInserter oi = repo.newObjectInserter();
|
try (ObjectInserter oi = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
ObjectId id = oi.insert(Constants.OBJ_TREE, new byte[] {});
|
ObjectId id = oi.insert(Constants.OBJ_TREE, new byte[] {});
|
||||||
oi.flush();
|
oi.flush();
|
||||||
return id;
|
return id;
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -396,7 +396,7 @@ public abstract class ChangeEmail extends NotificationEmail {
|
|||||||
|
|
||||||
TemporaryBuffer.Heap buf =
|
TemporaryBuffer.Heap buf =
|
||||||
new TemporaryBuffer.Heap(args.settings.maximumDiffSize);
|
new TemporaryBuffer.Heap(args.settings.maximumDiffSize);
|
||||||
DiffFormatter fmt = new DiffFormatter(buf);
|
try (DiffFormatter fmt = new DiffFormatter(buf)) {
|
||||||
Repository git;
|
Repository git;
|
||||||
try {
|
try {
|
||||||
git = args.server.openRepository(change.getProject());
|
git = args.server.openRepository(change.getProject());
|
||||||
@@ -416,8 +416,8 @@ public abstract class ChangeEmail extends NotificationEmail {
|
|||||||
log.error("Cannot format patch", e);
|
log.error("Cannot format patch", e);
|
||||||
return "";
|
return "";
|
||||||
} finally {
|
} finally {
|
||||||
fmt.release();
|
|
||||||
git.close();
|
git.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@@ -82,15 +82,11 @@ public class PatchSetNotificationSender {
|
|||||||
final Change updatedChange, final PatchSet updatedPatchSet,
|
final Change updatedChange, final PatchSet updatedPatchSet,
|
||||||
final LabelTypes labelTypes)
|
final LabelTypes labelTypes)
|
||||||
throws OrmException, IOException {
|
throws OrmException, IOException {
|
||||||
final Repository git = repoManager.openRepository(updatedChange.getProject());
|
try (Repository git = repoManager.openRepository(updatedChange.getProject())) {
|
||||||
try {
|
|
||||||
final RevWalk revWalk = new RevWalk(git);
|
|
||||||
final RevCommit commit;
|
final RevCommit commit;
|
||||||
try {
|
try (RevWalk revWalk = new RevWalk(git)) {
|
||||||
commit = revWalk.parseCommit(ObjectId.fromString(
|
commit = revWalk.parseCommit(ObjectId.fromString(
|
||||||
updatedPatchSet.getRevision().get()));
|
updatedPatchSet.getRevision().get()));
|
||||||
} finally {
|
|
||||||
revWalk.release();
|
|
||||||
}
|
}
|
||||||
final PatchSetInfo info = patchSetInfoFactory.get(commit, updatedPatchSet.getId());
|
final PatchSetInfo info = patchSetInfoFactory.get(commit, updatedPatchSet.getId());
|
||||||
final List<FooterLine> footerLines = commit.getFooterLines();
|
final List<FooterLine> footerLines = commit.getFooterLines();
|
||||||
@@ -134,8 +130,6 @@ public class PatchSetNotificationSender {
|
|||||||
log.error("Cannot send email for new patch set " + updatedPatchSet.getId(), e);
|
log.error("Cannot send email for new patch set " + updatedPatchSet.getId(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -272,8 +272,8 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
|||||||
loadDefaults();
|
loadDefaults();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RevWalk walk = new RevWalk(reader);
|
try (RevWalk walk = new RevWalk(reader);
|
||||||
try (ChangeNotesParser parser =
|
ChangeNotesParser parser =
|
||||||
new ChangeNotesParser(change, rev, walk, repoManager)) {
|
new ChangeNotesParser(change, rev, walk, repoManager)) {
|
||||||
parser.parseAll();
|
parser.parseAll();
|
||||||
|
|
||||||
@@ -301,8 +301,6 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
|
|||||||
this.allPastReviewers = ImmutableList.copyOf(parser.allPastReviewers);
|
this.allPastReviewers = ImmutableList.copyOf(parser.allPastReviewers);
|
||||||
|
|
||||||
submitRecords = ImmutableList.copyOf(parser.submitRecords);
|
submitRecords = ImmutableList.copyOf(parser.submitRecords);
|
||||||
} finally {
|
|
||||||
walk.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -200,12 +200,9 @@ public class ChangeRebuilder {
|
|||||||
private void writeToBatch(BatchMetaDataUpdate batch,
|
private void writeToBatch(BatchMetaDataUpdate batch,
|
||||||
AbstractChangeUpdate update, Repository repo) throws IOException,
|
AbstractChangeUpdate update, Repository repo) throws IOException,
|
||||||
OrmException {
|
OrmException {
|
||||||
ObjectInserter inserter = repo.newObjectInserter();
|
try (ObjectInserter inserter = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
update.setInserter(inserter);
|
update.setInserter(inserter);
|
||||||
update.writeCommit(batch);
|
update.writeCommit(batch);
|
||||||
} finally {
|
|
||||||
inserter.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -132,16 +132,14 @@ public class DraftCommentNotes extends AbstractChangeNotes<DraftCommentNotes> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RevWalk walk = new RevWalk(reader);
|
try (RevWalk walk = new RevWalk(reader);
|
||||||
try (DraftCommentNotesParser parser = new DraftCommentNotesParser(
|
DraftCommentNotesParser parser = new DraftCommentNotesParser(
|
||||||
getChangeId(), walk, rev, repoManager, draftsProject, author)) {
|
getChangeId(), walk, rev, repoManager, draftsProject, author)) {
|
||||||
parser.parseDraftComments();
|
parser.parseDraftComments();
|
||||||
|
|
||||||
buildCommentTable(draftBaseComments, parser.draftBaseComments);
|
buildCommentTable(draftBaseComments, parser.draftBaseComments);
|
||||||
buildCommentTable(draftPsComments, parser.draftPsComments);
|
buildCommentTable(draftPsComments, parser.draftPsComments);
|
||||||
noteMap = parser.noteMap;
|
noteMap = parser.noteMap;
|
||||||
} finally {
|
|
||||||
walk.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -48,9 +48,8 @@ public class PatchFile {
|
|||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
this.entry = patchList.get(fileName);
|
this.entry = patchList.get(fileName);
|
||||||
|
|
||||||
final ObjectReader reader = repo.newObjectReader();
|
try (ObjectReader reader = repo.newObjectReader();
|
||||||
try {
|
RevWalk rw = new RevWalk(reader)) {
|
||||||
final RevWalk rw = new RevWalk(reader);
|
|
||||||
final RevCommit bCommit = rw.parseCommit(patchList.getNewId());
|
final RevCommit bCommit = rw.parseCommit(patchList.getNewId());
|
||||||
|
|
||||||
if (Patch.COMMIT_MSG.equals(fileName)) {
|
if (Patch.COMMIT_MSG.equals(fileName)) {
|
||||||
@@ -74,8 +73,6 @@ public class PatchFile {
|
|||||||
}
|
}
|
||||||
bTree = bCommit.getTree();
|
bTree = bCommit.getTree();
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
reader.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -133,9 +133,9 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
|
|||||||
private PatchList readPatchList(final PatchListKey key, final Repository repo)
|
private PatchList readPatchList(final PatchListKey key, final Repository repo)
|
||||||
throws IOException, PatchListNotAvailableException {
|
throws IOException, PatchListNotAvailableException {
|
||||||
final RawTextComparator cmp = comparatorFor(key.getWhitespace());
|
final RawTextComparator cmp = comparatorFor(key.getWhitespace());
|
||||||
final ObjectReader reader = repo.newObjectReader();
|
try (ObjectReader reader = repo.newObjectReader();
|
||||||
try {
|
RevWalk rw = new RevWalk(reader);
|
||||||
final RevWalk rw = new RevWalk(reader);
|
DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE)) {
|
||||||
final RevCommit b = rw.parseCommit(key.getNewId());
|
final RevCommit b = rw.parseCommit(key.getNewId());
|
||||||
final RevObject a = aFor(key, repo, rw, b);
|
final RevObject a = aFor(key, repo, rw, b);
|
||||||
|
|
||||||
@@ -155,7 +155,6 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
|
|||||||
RevTree aTree = rw.parseTree(a);
|
RevTree aTree = rw.parseTree(a);
|
||||||
RevTree bTree = b.getTree();
|
RevTree bTree = b.getTree();
|
||||||
|
|
||||||
DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE);
|
|
||||||
df.setRepository(repo);
|
df.setRepository(repo);
|
||||||
df.setDiffComparator(cmp);
|
df.setDiffComparator(cmp);
|
||||||
df.setDetectRenames(true);
|
df.setDetectRenames(true);
|
||||||
@@ -187,8 +186,6 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
|
|||||||
}
|
}
|
||||||
return new PatchList(a, b, againstParent,
|
return new PatchList(a, b, againstParent,
|
||||||
entries.toArray(new PatchListEntry[entries.size()]));
|
entries.toArray(new PatchListEntry[entries.size()]));
|
||||||
} finally {
|
|
||||||
reader.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,8 +323,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ResolveMerger m = (ResolveMerger) mergeStrategy.newMerger(repo, true);
|
ResolveMerger m = (ResolveMerger) mergeStrategy.newMerger(repo, true);
|
||||||
final ObjectInserter ins = repo.newObjectInserter();
|
try (ObjectInserter ins = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
DirCache dc = DirCache.newInCore();
|
DirCache dc = DirCache.newInCore();
|
||||||
m.setDirCache(dc);
|
m.setDirCache(dc);
|
||||||
m.setObjectInserter(new ObjectInserter.Filter() {
|
m.setObjectInserter(new ObjectInserter.Filter() {
|
||||||
@@ -452,19 +448,14 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return rw.lookupTree(treeId);
|
return rw.lookupTree(treeId);
|
||||||
} finally {
|
|
||||||
ins.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ObjectId emptyTree(final Repository repo) throws IOException {
|
private static ObjectId emptyTree(final Repository repo) throws IOException {
|
||||||
ObjectInserter oi = repo.newObjectInserter();
|
try (ObjectInserter oi = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
ObjectId id = oi.insert(Constants.OBJ_TREE, new byte[] {});
|
ObjectId id = oi.insert(Constants.OBJ_TREE, new byte[] {});
|
||||||
oi.flush();
|
oi.flush();
|
||||||
return id;
|
return id;
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -119,7 +119,7 @@ class PatchScriptBuilder {
|
|||||||
try {
|
try {
|
||||||
return build(content, comments, history);
|
return build(content, comments, history);
|
||||||
} finally {
|
} finally {
|
||||||
reader.release();
|
reader.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,11 +514,12 @@ class PatchScriptBuilder {
|
|||||||
if (path == null || within == null) {
|
if (path == null || within == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final RevWalk rw = new RevWalk(reader);
|
try (RevWalk rw = new RevWalk(reader)) {
|
||||||
final RevTree tree = rw.parseTree(within);
|
final RevTree tree = rw.parseTree(within);
|
||||||
return TreeWalk.forPath(reader, path, tree);
|
return TreeWalk.forPath(reader, path, tree);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isBothFile(FileMode a, FileMode b) {
|
private static boolean isBothFile(FileMode a, FileMode b) {
|
||||||
return (a.getBits() & FileMode.TYPE_FILE) == FileMode.TYPE_FILE
|
return (a.getBits() & FileMode.TYPE_FILE) == FileMode.TYPE_FILE
|
||||||
|
@@ -85,17 +85,12 @@ public class PatchSetInfoFactory {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new PatchSetInfoNotAvailableException(e);
|
throw new PatchSetInfoNotAvailableException(e);
|
||||||
}
|
}
|
||||||
try {
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
final RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
final RevCommit src =
|
final RevCommit src =
|
||||||
rw.parseCommit(ObjectId.fromString(patchSet.getRevision().get()));
|
rw.parseCommit(ObjectId.fromString(patchSet.getRevision().get()));
|
||||||
PatchSetInfo info = get(src, patchSet.getId());
|
PatchSetInfo info = get(src, patchSet.getId());
|
||||||
info.setParents(toParentInfos(src.getParents(), rw));
|
info.setParents(toParentInfos(src.getParents(), rw));
|
||||||
return info;
|
return info;
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new PatchSetInfoNotAvailableException(e);
|
throw new PatchSetInfoNotAvailableException(e);
|
||||||
} finally {
|
} finally {
|
||||||
|
@@ -44,7 +44,7 @@ public class Text extends RawText {
|
|||||||
public static final Text EMPTY = new Text(NO_BYTES);
|
public static final Text EMPTY = new Text(NO_BYTES);
|
||||||
|
|
||||||
public static Text forCommit(ObjectReader reader, AnyObjectId commitId) throws IOException {
|
public static Text forCommit(ObjectReader reader, AnyObjectId commitId) throws IOException {
|
||||||
RevWalk rw = new RevWalk(reader);
|
try (RevWalk rw = new RevWalk(reader)) {
|
||||||
RevCommit c;
|
RevCommit c;
|
||||||
if (commitId instanceof RevCommit) {
|
if (commitId instanceof RevCommit) {
|
||||||
c = (RevCommit) commitId;
|
c = (RevCommit) commitId;
|
||||||
@@ -83,6 +83,7 @@ public class Text extends RawText {
|
|||||||
b.append(c.getFullMessage());
|
b.append(c.getFullMessage());
|
||||||
return new Text(b.toString().getBytes("UTF-8"));
|
return new Text(b.toString().getBytes("UTF-8"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void appendPersonIdent(StringBuilder b, String field,
|
private static void appendPersonIdent(StringBuilder b, String field,
|
||||||
PersonIdent person) {
|
PersonIdent person) {
|
||||||
|
@@ -65,10 +65,8 @@ public class CommitsCollection implements
|
|||||||
throw new ResourceNotFoundException(id);
|
throw new ResourceNotFoundException(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Repository repo = repoManager.openRepository(parent.getNameKey());
|
try (Repository repo = repoManager.openRepository(parent.getNameKey());
|
||||||
try {
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
RevCommit commit = rw.parseCommit(objectId);
|
RevCommit commit = rw.parseCommit(objectId);
|
||||||
rw.parseBody(commit);
|
rw.parseBody(commit);
|
||||||
if (!parent.getControl().canReadCommit(db.get(), rw, commit)) {
|
if (!parent.getControl().canReadCommit(db.get(), rw, commit)) {
|
||||||
@@ -80,11 +78,6 @@ public class CommitsCollection implements
|
|||||||
return new CommitResource(parent, commit);
|
return new CommitResource(parent, commit);
|
||||||
} catch (MissingObjectException | IncorrectObjectTypeException e) {
|
} catch (MissingObjectException | IncorrectObjectTypeException e) {
|
||||||
throw new ResourceNotFoundException(id);
|
throw new ResourceNotFoundException(id);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -99,11 +99,8 @@ class DeleteBranches implements RestModifyView<ProjectResource, Input> {
|
|||||||
for (String branch : input.branches) {
|
for (String branch : input.branches) {
|
||||||
batchUpdate.addCommand(createDeleteCommand(project, r, branch));
|
batchUpdate.addCommand(createDeleteCommand(project, r, branch));
|
||||||
}
|
}
|
||||||
RevWalk rw = new RevWalk(r);
|
try (RevWalk rw = new RevWalk(r)) {
|
||||||
try {
|
|
||||||
batchUpdate.execute(rw, NullProgressMonitor.INSTANCE);
|
batchUpdate.execute(rw, NullProgressMonitor.INSTANCE);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
StringBuilder errorMessages = new StringBuilder();
|
StringBuilder errorMessages = new StringBuilder();
|
||||||
for (ReceiveCommand command : batchUpdate.getCommands()) {
|
for (ReceiveCommand command : batchUpdate.getCommands()) {
|
||||||
|
@@ -49,9 +49,7 @@ public class GetHead implements RestReadView<ProjectResource> {
|
|||||||
@Override
|
@Override
|
||||||
public String apply(ProjectResource rsrc) throws AuthException,
|
public String apply(ProjectResource rsrc) throws AuthException,
|
||||||
ResourceNotFoundException, IOException {
|
ResourceNotFoundException, IOException {
|
||||||
Repository repo = null;
|
try (Repository repo = repoManager.openRepository(rsrc.getNameKey())) {
|
||||||
try {
|
|
||||||
repo = repoManager.openRepository(rsrc.getNameKey());
|
|
||||||
Ref head = repo.getRef(Constants.HEAD);
|
Ref head = repo.getRef(Constants.HEAD);
|
||||||
if (head == null) {
|
if (head == null) {
|
||||||
throw new ResourceNotFoundException(Constants.HEAD);
|
throw new ResourceNotFoundException(Constants.HEAD);
|
||||||
@@ -62,8 +60,7 @@ public class GetHead implements RestReadView<ProjectResource> {
|
|||||||
}
|
}
|
||||||
throw new AuthException("not allowed to see HEAD");
|
throw new AuthException("not allowed to see HEAD");
|
||||||
} else if (head.getObjectId() != null) {
|
} else if (head.getObjectId() != null) {
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
RevCommit commit = rw.parseCommit(head.getObjectId());
|
RevCommit commit = rw.parseCommit(head.getObjectId());
|
||||||
if (rsrc.getControl().canReadCommit(db.get(), rw, commit)) {
|
if (rsrc.getControl().canReadCommit(db.get(), rw, commit)) {
|
||||||
return head.getObjectId().name();
|
return head.getObjectId().name();
|
||||||
@@ -74,17 +71,11 @@ public class GetHead implements RestReadView<ProjectResource> {
|
|||||||
return head.getObjectId().name();
|
return head.getObjectId().name();
|
||||||
}
|
}
|
||||||
throw new AuthException("not allowed to see HEAD");
|
throw new AuthException("not allowed to see HEAD");
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new ResourceNotFoundException(Constants.HEAD);
|
throw new ResourceNotFoundException(Constants.HEAD);
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (RepositoryNotFoundException e) {
|
||||||
throw new ResourceNotFoundException(rsrc.getName());
|
throw new ResourceNotFoundException(rsrc.getName());
|
||||||
} finally {
|
|
||||||
if (repo != null) {
|
|
||||||
repo.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -82,15 +82,9 @@ class ListDashboards implements RestReadView<ProjectResource> {
|
|||||||
|
|
||||||
private List<DashboardInfo> scan(ProjectControl ctl, String project,
|
private List<DashboardInfo> scan(ProjectControl ctl, String project,
|
||||||
boolean setDefault) throws ResourceNotFoundException, IOException {
|
boolean setDefault) throws ResourceNotFoundException, IOException {
|
||||||
Repository git;
|
Project.NameKey projectName = ctl.getProject().getNameKey();
|
||||||
try {
|
try (Repository git = gitManager.openRepository(projectName);
|
||||||
git = gitManager.openRepository(ctl.getProject().getNameKey());
|
RevWalk rw = new RevWalk(git)) {
|
||||||
} catch (RepositoryNotFoundException e) {
|
|
||||||
throw new ResourceNotFoundException();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
RevWalk rw = new RevWalk(git);
|
|
||||||
try {
|
|
||||||
List<DashboardInfo> all = Lists.newArrayList();
|
List<DashboardInfo> all = Lists.newArrayList();
|
||||||
for (Ref ref : git.getRefDatabase().getRefs(REFS_DASHBOARDS).values()) {
|
for (Ref ref : git.getRefDatabase().getRefs(REFS_DASHBOARDS).values()) {
|
||||||
if (ctl.controlForRef(ref.getName()).canRead()) {
|
if (ctl.controlForRef(ref.getName()).canRead()) {
|
||||||
@@ -99,11 +93,8 @@ class ListDashboards implements RestReadView<ProjectResource> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return all;
|
return all;
|
||||||
} finally {
|
} catch (RepositoryNotFoundException e) {
|
||||||
rw.release();
|
throw new ResourceNotFoundException();
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
git.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +102,7 @@ class ListDashboards implements RestReadView<ProjectResource> {
|
|||||||
Repository git, RevWalk rw, Ref ref, String project, boolean setDefault)
|
Repository git, RevWalk rw, Ref ref, String project, boolean setDefault)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
List<DashboardInfo> list = Lists.newArrayList();
|
List<DashboardInfo> list = Lists.newArrayList();
|
||||||
TreeWalk tw = new TreeWalk(rw.getObjectReader());
|
try (TreeWalk tw = new TreeWalk(rw.getObjectReader())) {
|
||||||
tw.addTree(rw.parseTree(ref.getObjectId()));
|
tw.addTree(rw.parseTree(ref.getObjectId()));
|
||||||
tw.setRecursive(true);
|
tw.setRecursive(true);
|
||||||
while (tw.next()) {
|
while (tw.next()) {
|
||||||
@@ -132,6 +123,7 @@ class ListDashboards implements RestReadView<ProjectResource> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -98,26 +98,17 @@ public class ListTags implements RestReadView<ProjectResource> {
|
|||||||
|
|
||||||
public TagInfo get(ProjectResource resource, IdString id)
|
public TagInfo get(ProjectResource resource, IdString id)
|
||||||
throws ResourceNotFoundException, IOException {
|
throws ResourceNotFoundException, IOException {
|
||||||
Repository repo = getRepository(resource.getNameKey());
|
try (Repository repo = getRepository(resource.getNameKey());
|
||||||
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
String tagName = id.get();
|
String tagName = id.get();
|
||||||
if (!tagName.startsWith(Constants.R_TAGS)) {
|
if (!tagName.startsWith(Constants.R_TAGS)) {
|
||||||
tagName = Constants.R_TAGS + tagName;
|
tagName = Constants.R_TAGS + tagName;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
Ref ref = repo.getRefDatabase().getRef(tagName);
|
Ref ref = repo.getRefDatabase().getRef(tagName);
|
||||||
if (ref != null && !visibleTags(resource.getControl(), repo,
|
if (ref != null && !visibleTags(resource.getControl(), repo,
|
||||||
ImmutableMap.of(ref.getName(), ref)).isEmpty()) {
|
ImmutableMap.of(ref.getName(), ref)).isEmpty()) {
|
||||||
return createTagInfo(ref, rw);
|
return createTagInfo(ref, rw);
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
rw.dispose();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
throw new ResourceNotFoundException(id);
|
throw new ResourceNotFoundException(id);
|
||||||
}
|
}
|
||||||
|
@@ -270,8 +270,7 @@ public class PerformCreateProject {
|
|||||||
private void createEmptyCommits(final Repository repo,
|
private void createEmptyCommits(final Repository repo,
|
||||||
final Project.NameKey project, final List<String> refs)
|
final Project.NameKey project, final List<String> refs)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
ObjectInserter oi = repo.newObjectInserter();
|
try (ObjectInserter oi = repo.newObjectInserter()) {
|
||||||
try {
|
|
||||||
CommitBuilder cb = new CommitBuilder();
|
CommitBuilder cb = new CommitBuilder();
|
||||||
cb.setTreeId(oi.insert(Constants.OBJ_TREE, new byte[] {}));
|
cb.setTreeId(oi.insert(Constants.OBJ_TREE, new byte[] {}));
|
||||||
cb.setAuthor(metaDataUpdateFactory.getUserPersonIdent());
|
cb.setAuthor(metaDataUpdateFactory.getUserPersonIdent());
|
||||||
@@ -300,8 +299,6 @@ public class PerformCreateProject {
|
|||||||
"Cannot create empty commit for "
|
"Cannot create empty commit for "
|
||||||
+ createProjectArgs.getProjectName(), e);
|
+ createProjectArgs.getProjectName(), e);
|
||||||
throw e;
|
throw e;
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -523,18 +523,11 @@ public class ChangeData {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String sha1 = ps.getRevision().get();
|
String sha1 = ps.getRevision().get();
|
||||||
Repository repo = repoManager.openRepository(change().getProject());
|
try (Repository repo = repoManager.openRepository(change().getProject());
|
||||||
try {
|
RevWalk walk = new RevWalk(repo)) {
|
||||||
RevWalk walk = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
RevCommit c = walk.parseCommit(ObjectId.fromString(sha1));
|
RevCommit c = walk.parseCommit(ObjectId.fromString(sha1));
|
||||||
commitMessage = c.getFullMessage();
|
commitMessage = c.getFullMessage();
|
||||||
commitFooters = c.getFooterLines();
|
commitFooters = c.getFooterLines();
|
||||||
} finally {
|
|
||||||
walk.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -107,12 +107,9 @@ class ConflictsPredicate extends OrPredicate<ChangeData> {
|
|||||||
if (conflicts != null) {
|
if (conflicts != null) {
|
||||||
return conflicts;
|
return conflicts;
|
||||||
}
|
}
|
||||||
try {
|
try (Repository repo =
|
||||||
Repository repo =
|
|
||||||
args.repoManager.openRepository(otherChange.getProject());
|
args.repoManager.openRepository(otherChange.getProject());
|
||||||
try {
|
RevWalk rw = CodeReviewCommit.newRevWalk(repo)) {
|
||||||
RevWalk rw = CodeReviewCommit.newRevWalk(repo);
|
|
||||||
try {
|
|
||||||
RevFlag canMergeFlag = rw.newFlag("CAN_MERGE");
|
RevFlag canMergeFlag = rw.newFlag("CAN_MERGE");
|
||||||
CodeReviewCommit commit =
|
CodeReviewCommit commit =
|
||||||
(CodeReviewCommit) rw.parseCommit(changeDataCache.getTestAgainst());
|
(CodeReviewCommit) rw.parseCommit(changeDataCache.getTestAgainst());
|
||||||
@@ -127,17 +124,7 @@ class ConflictsPredicate extends OrPredicate<ChangeData> {
|
|||||||
conflicts = !strategy.dryRun(commit, otherCommit);
|
conflicts = !strategy.dryRun(commit, otherCommit);
|
||||||
args.conflictsCache.put(conflictsKey, conflicts);
|
args.conflictsCache.put(conflictsKey, conflicts);
|
||||||
return conflicts;
|
return conflicts;
|
||||||
} catch (MergeException e) {
|
} catch (MergeException | NoSuchProjectException | IOException e) {
|
||||||
throw new IllegalStateException(e);
|
|
||||||
} catch (NoSuchProjectException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -102,18 +102,9 @@ public abstract class RevWalkPredicate extends OperatorPredicate<ChangeData> {
|
|||||||
|
|
||||||
Arguments args = new Arguments(patchSet, revision, objectId, change, projectName);
|
Arguments args = new Arguments(patchSet, revision, objectId, change, projectName);
|
||||||
|
|
||||||
try {
|
try (Repository repo = repoManager.openRepository(projectName);
|
||||||
final Repository repo = repoManager.openRepository(projectName);
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
final RevWalk rw = new RevWalk(repo);
|
|
||||||
try {
|
|
||||||
return match(repo, rw, args);
|
return match(repo, rw, args);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
repo.close();
|
|
||||||
}
|
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (RepositoryNotFoundException e) {
|
||||||
log.error("Repository \"" + projectName.get() + "\" unknown.", e);
|
log.error("Repository \"" + projectName.get() + "\" unknown.", e);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@@ -73,11 +73,10 @@ public class PRED_commit_edits_2 extends Predicate.P2 {
|
|||||||
PatchList pl = StoredValues.PATCH_LIST.get(engine);
|
PatchList pl = StoredValues.PATCH_LIST.get(engine);
|
||||||
Repository repo = StoredValues.REPOSITORY.get(engine);
|
Repository repo = StoredValues.REPOSITORY.get(engine);
|
||||||
|
|
||||||
final ObjectReader reader = repo.newObjectReader();
|
try (ObjectReader reader = repo.newObjectReader();
|
||||||
|
RevWalk rw = new RevWalk(reader)) {
|
||||||
final RevTree aTree;
|
final RevTree aTree;
|
||||||
final RevTree bTree;
|
final RevTree bTree;
|
||||||
try {
|
|
||||||
final RevWalk rw = new RevWalk(reader);
|
|
||||||
final RevCommit bCommit = rw.parseCommit(pl.getNewId());
|
final RevCommit bCommit = rw.parseCommit(pl.getNewId());
|
||||||
|
|
||||||
if (pl.getOldId() != null) {
|
if (pl.getOldId() != null) {
|
||||||
@@ -129,8 +128,6 @@ public class PRED_commit_edits_2 extends Predicate.P2 {
|
|||||||
}
|
}
|
||||||
} catch (IOException err) {
|
} catch (IOException err) {
|
||||||
throw new JavaException(this, 1, err);
|
throw new JavaException(this, 1, err);
|
||||||
} finally {
|
|
||||||
reader.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return engine.fail();
|
return engine.fail();
|
||||||
|
@@ -86,6 +86,8 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
Git git = new Git(db);
|
Git git = new Git(db);
|
||||||
revWalk = new RevWalk(db);
|
revWalk = new RevWalk(db);
|
||||||
// Version 1.0
|
// Version 1.0
|
||||||
@@ -129,7 +131,7 @@ public class IncludedInResolverTest extends RepositoryTestCase {
|
|||||||
@Override
|
@Override
|
||||||
@After
|
@After
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
revWalk.release();
|
revWalk.close();
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -118,7 +118,9 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
public void testEmptyCommit() throws Exception {
|
public void testEmptyCommit() throws Exception {
|
||||||
expect(schemaFactory.open()).andReturn(schema);
|
expect(schemaFactory.open()).andReturn(schema);
|
||||||
|
|
||||||
final Repository realDb = createWorkRepository();
|
try (Repository realDb = createWorkRepository()) {
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
final Git git = new Git(realDb);
|
final Git git = new Git(realDb);
|
||||||
|
|
||||||
final RevCommit mergeTip = git.commit().setMessage("test").call();
|
final RevCommit mergeTip = git.commit().setMessage("test").call();
|
||||||
@@ -147,6 +149,7 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
|
|
||||||
doVerify();
|
doVerify();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It tests SubmoduleOp.update in a scenario considering:
|
* It tests SubmoduleOp.update in a scenario considering:
|
||||||
@@ -588,8 +591,14 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
public void testOneSubscriberToUpdate() throws Exception {
|
public void testOneSubscriberToUpdate() throws Exception {
|
||||||
expect(schemaFactory.open()).andReturn(schema);
|
expect(schemaFactory.open()).andReturn(schema);
|
||||||
|
|
||||||
final Repository sourceRepository = createWorkRepository();
|
try (Repository sourceRepository = createWorkRepository();
|
||||||
|
Repository targetRepository = createWorkRepository()) {
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
final Git sourceGit = new Git(sourceRepository);
|
final Git sourceGit = new Git(sourceRepository);
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
|
final Git targetGit = new Git(targetRepository);
|
||||||
|
|
||||||
addRegularFileToIndex("file.txt", "test content", sourceRepository);
|
addRegularFileToIndex("file.txt", "test content", sourceRepository);
|
||||||
|
|
||||||
@@ -612,9 +621,6 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
final List<Change> submitted = new ArrayList<>();
|
final List<Change> submitted = new ArrayList<>();
|
||||||
submitted.add(submittedChange);
|
submitted.add(submittedChange);
|
||||||
|
|
||||||
final Repository targetRepository = createWorkRepository();
|
|
||||||
final Git targetGit = new Git(targetRepository);
|
|
||||||
|
|
||||||
addGitLinkToIndex("a", sourceMergeTip.copy(), targetRepository);
|
addGitLinkToIndex("a", sourceMergeTip.copy(), targetRepository);
|
||||||
|
|
||||||
targetGit.commit().setMessage("test").call();
|
targetGit.commit().setMessage("test").call();
|
||||||
@@ -668,6 +674,7 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
RefUpdate ru = ruCapture.getValue();
|
RefUpdate ru = ruCapture.getValue();
|
||||||
assertEquals(ru.getName(), targetBranchNameKey.get());
|
assertEquals(ru.getName(), targetBranchNameKey.get());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It tests SubmoduleOp.update in a scenario considering established circular
|
* It tests SubmoduleOp.update in a scenario considering established circular
|
||||||
@@ -693,8 +700,14 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
public void testAvoidingCircularReference() throws Exception {
|
public void testAvoidingCircularReference() throws Exception {
|
||||||
expect(schemaFactory.open()).andReturn(schema);
|
expect(schemaFactory.open()).andReturn(schema);
|
||||||
|
|
||||||
final Repository sourceRepository = createWorkRepository();
|
try (Repository sourceRepository = createWorkRepository();
|
||||||
|
Repository targetRepository = createWorkRepository()) {
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
final Git sourceGit = new Git(sourceRepository);
|
final Git sourceGit = new Git(sourceRepository);
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
|
final Git targetGit = new Git(targetRepository);
|
||||||
|
|
||||||
addRegularFileToIndex("file.txt", "test content", sourceRepository);
|
addRegularFileToIndex("file.txt", "test content", sourceRepository);
|
||||||
|
|
||||||
@@ -717,9 +730,6 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
final List<Change> submitted = new ArrayList<>();
|
final List<Change> submitted = new ArrayList<>();
|
||||||
submitted.add(submittedChange);
|
submitted.add(submittedChange);
|
||||||
|
|
||||||
final Repository targetRepository = createWorkRepository();
|
|
||||||
final Git targetGit = new Git(targetRepository);
|
|
||||||
|
|
||||||
addGitLinkToIndex("a", sourceMergeTip.copy(), targetRepository);
|
addGitLinkToIndex("a", sourceMergeTip.copy(), targetRepository);
|
||||||
|
|
||||||
targetGit.commit().setMessage("test").call();
|
targetGit.commit().setMessage("test").call();
|
||||||
@@ -774,6 +784,7 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
RefUpdate ru = ruCapture.getValue();
|
RefUpdate ru = ruCapture.getValue();
|
||||||
assertEquals(ru.getName(), targetBranchNameKey.get());
|
assertEquals(ru.getName(), targetBranchNameKey.get());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It calls SubmoduleOp.update considering only one insert on Subscriptions
|
* It calls SubmoduleOp.update considering only one insert on Subscriptions
|
||||||
@@ -862,7 +873,9 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
final List<SubmoduleSubscription> previousSubscriptions) throws Exception {
|
final List<SubmoduleSubscription> previousSubscriptions) throws Exception {
|
||||||
expect(schemaFactory.open()).andReturn(schema);
|
expect(schemaFactory.open()).andReturn(schema);
|
||||||
|
|
||||||
final Repository realDb = createWorkRepository();
|
try (Repository realDb = createWorkRepository()) {
|
||||||
|
// TODO(dborowitz): Use try/finally when this doesn't double-close the repo.
|
||||||
|
@SuppressWarnings("resource")
|
||||||
final Git git = new Git(realDb);
|
final Git git = new Git(realDb);
|
||||||
|
|
||||||
addRegularFileToIndex(".gitmodules", gitModulesFileContent, realDb);
|
addRegularFileToIndex(".gitmodules", gitModulesFileContent, realDb);
|
||||||
@@ -924,6 +937,7 @@ public class SubmoduleOpTest extends LocalDiskRepositoryTestCase {
|
|||||||
|
|
||||||
submoduleOp.update();
|
submoduleOp.update();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It creates and adds a regular file to git index of a repository.
|
* It creates and adds a regular file to git index of a repository.
|
||||||
|
@@ -43,7 +43,7 @@ public class ChangeNotesParserTest extends AbstractChangeNotesTest {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDownTestRepo() throws Exception {
|
public void tearDownTestRepo() throws Exception {
|
||||||
walk.release();
|
walk.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -176,8 +176,7 @@ public class ChangeNotesParserTest extends AbstractChangeNotesTest {
|
|||||||
|
|
||||||
private RevCommit writeCommit(String body, PersonIdent author)
|
private RevCommit writeCommit(String body, PersonIdent author)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
ObjectInserter ins = testRepo.getRepository().newObjectInserter();
|
try (ObjectInserter ins = testRepo.getRepository().newObjectInserter()) {
|
||||||
try {
|
|
||||||
CommitBuilder cb = new CommitBuilder();
|
CommitBuilder cb = new CommitBuilder();
|
||||||
cb.setAuthor(author);
|
cb.setAuthor(author);
|
||||||
cb.setCommitter(new PersonIdent(serverIdent, author.getWhen()));
|
cb.setCommitter(new PersonIdent(serverIdent, author.getWhen()));
|
||||||
@@ -188,8 +187,6 @@ public class ChangeNotesParserTest extends AbstractChangeNotesTest {
|
|||||||
RevCommit commit = walk.parseCommit(id);
|
RevCommit commit = walk.parseCommit(id);
|
||||||
walk.parseBody(commit);
|
walk.parseBody(commit);
|
||||||
return commit;
|
return commit;
|
||||||
} finally {
|
|
||||||
ins.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -348,13 +348,10 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
hashtags.add("tag2");
|
hashtags.add("tag2");
|
||||||
update.setHashtags(hashtags);
|
update.setHashtags(hashtags);
|
||||||
update.commit();
|
update.commit();
|
||||||
RevWalk walk = new RevWalk(repo);
|
try (RevWalk walk = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
RevCommit commit = walk.parseCommit(update.getRevision());
|
RevCommit commit = walk.parseCommit(update.getRevision());
|
||||||
walk.parseBody(commit);
|
walk.parseBody(commit);
|
||||||
assertTrue(commit.getFullMessage().endsWith("Hashtags: tag1,tag2\n"));
|
assertTrue(commit.getFullMessage().endsWith("Hashtags: tag1,tag2\n"));
|
||||||
} finally {
|
|
||||||
walk.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -433,8 +430,7 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
update2.putApproval("Code-Review", (short) 2);
|
update2.putApproval("Code-Review", (short) 2);
|
||||||
update2.writeCommit(batch);
|
update2.writeCommit(batch);
|
||||||
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
batch.commit();
|
batch.commit();
|
||||||
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
||||||
|
|
||||||
@@ -464,7 +460,6 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
notesWithApprovals.close();
|
notesWithApprovals.close();
|
||||||
} finally {
|
} finally {
|
||||||
batch.close();
|
batch.close();
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -506,11 +501,8 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
assertEquals(update1.getRefName(), cmds.get(0).getRefName());
|
assertEquals(update1.getRefName(), cmds.get(0).getRefName());
|
||||||
assertEquals(update2.getRefName(), cmds.get(1).getRefName());
|
assertEquals(update2.getRefName(), cmds.get(1).getRefName());
|
||||||
|
|
||||||
RevWalk rw = new RevWalk(repo);
|
try (RevWalk rw = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
bru.execute(rw, NullProgressMonitor.INSTANCE);
|
||||||
} finally {
|
|
||||||
rw.release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals(ReceiveCommand.Result.OK, cmds.get(0).getResult());
|
assertEquals(ReceiveCommand.Result.OK, cmds.get(0).getResult());
|
||||||
@@ -712,7 +704,7 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
|
|
||||||
ChangeNotes notes = newNotes(c);
|
ChangeNotes notes = newNotes(c);
|
||||||
|
|
||||||
RevWalk walk = new RevWalk(repo);
|
try (RevWalk walk = new RevWalk(repo)) {
|
||||||
ArrayList<Note> notesInTree =
|
ArrayList<Note> notesInTree =
|
||||||
Lists.newArrayList(notes.getNoteMap().iterator());
|
Lists.newArrayList(notes.getNoteMap().iterator());
|
||||||
Note note = Iterables.getOnlyElement(notesInTree);
|
Note note = Iterables.getOnlyElement(notesInTree);
|
||||||
@@ -750,6 +742,7 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
+ "\n",
|
+ "\n",
|
||||||
noteString);
|
noteString);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void patchLineCommentNotesFormatSide0() throws Exception {
|
public void patchLineCommentNotesFormatSide0() throws Exception {
|
||||||
@@ -782,7 +775,7 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
|
|
||||||
ChangeNotes notes = newNotes(c);
|
ChangeNotes notes = newNotes(c);
|
||||||
|
|
||||||
RevWalk walk = new RevWalk(repo);
|
try (RevWalk walk = new RevWalk(repo)) {
|
||||||
ArrayList<Note> notesInTree =
|
ArrayList<Note> notesInTree =
|
||||||
Lists.newArrayList(notes.getNoteMap().iterator());
|
Lists.newArrayList(notes.getNoteMap().iterator());
|
||||||
Note note = Iterables.getOnlyElement(notesInTree);
|
Note note = Iterables.getOnlyElement(notesInTree);
|
||||||
@@ -811,6 +804,7 @@ public class ChangeNotesTest extends AbstractChangeNotesTest {
|
|||||||
+ "\n",
|
+ "\n",
|
||||||
noteString);
|
noteString);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void patchLineCommentMultipleOnePatchsetOneFileBothSides()
|
public void patchLineCommentMultipleOnePatchsetOneFileBothSides()
|
||||||
|
@@ -242,13 +242,10 @@ public class CommitMessageOutputTest extends AbstractChangeNotesTest {
|
|||||||
if (id instanceof RevCommit) {
|
if (id instanceof RevCommit) {
|
||||||
return (RevCommit) id;
|
return (RevCommit) id;
|
||||||
}
|
}
|
||||||
RevWalk walk = new RevWalk(repo);
|
try (RevWalk walk = new RevWalk(repo)) {
|
||||||
try {
|
|
||||||
RevCommit commit = walk.parseCommit(id);
|
RevCommit commit = walk.parseCommit(id);
|
||||||
walk.parseBody(commit);
|
walk.parseBody(commit);
|
||||||
return commit;
|
return commit;
|
||||||
} finally {
|
|
||||||
walk.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -423,21 +423,17 @@ public class CommitMsgHookTest extends HookTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private DirCacheEntry file(final String name) throws IOException {
|
private DirCacheEntry file(final String name) throws IOException {
|
||||||
final ObjectInserter oi = repository.newObjectInserter();
|
try (ObjectInserter oi = repository.newObjectInserter()) {
|
||||||
try {
|
|
||||||
final DirCacheEntry e = new DirCacheEntry(name);
|
final DirCacheEntry e = new DirCacheEntry(name);
|
||||||
e.setFileMode(FileMode.REGULAR_FILE);
|
e.setFileMode(FileMode.REGULAR_FILE);
|
||||||
e.setObjectId(oi.insert(Constants.OBJ_BLOB, Constants.encode(name)));
|
e.setObjectId(oi.insert(Constants.OBJ_BLOB, Constants.encode(name)));
|
||||||
oi.flush();
|
oi.flush();
|
||||||
return e;
|
return e;
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setHEAD() throws Exception {
|
private void setHEAD() throws Exception {
|
||||||
final ObjectInserter oi = repository.newObjectInserter();
|
try (ObjectInserter oi = repository.newObjectInserter()) {
|
||||||
try {
|
|
||||||
final CommitBuilder commit = new CommitBuilder();
|
final CommitBuilder commit = new CommitBuilder();
|
||||||
commit.setTreeId(oi.insert(Constants.OBJ_TREE, new byte[] {}));
|
commit.setTreeId(oi.insert(Constants.OBJ_TREE, new byte[] {}));
|
||||||
commit.setAuthor(author);
|
commit.setAuthor(author);
|
||||||
@@ -456,8 +452,6 @@ public class CommitMsgHookTest extends HookTestCase {
|
|||||||
default:
|
default:
|
||||||
fail(Constants.HEAD + " did not change: " + ref.getResult());
|
fail(Constants.HEAD + " did not change: " + ref.getResult());
|
||||||
}
|
}
|
||||||
} finally {
|
|
||||||
oi.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Submodule plugins/reviewnotes updated: ba824869c6...603b7b3885
Reference in New Issue
Block a user