package e2e;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectSorter;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.diff.DiffEntry;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.CanonicalTreeParser;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JGitDiscoveryTest {
Repository repo;
@Before public void locateRepo() throws IOException {
repo = new FileRepository(findSubFolder(".git"));
}
@After public void closeRepo() {
repo.close();
}
@Test public void showMeTheLog() throws IOException, GitAPIException {
Git git = new Git(repo);
Iterable<RevCommit> log = git.log().call();
for (RevCommit revCommit : log)
System.out.println(revCommit.getFullMessage().trim());
}
@Test public void blah() throws Exception {
ArrayList projects = new ArrayList();
projects.add(new MavenProject());
new ProjectSorter(projects);
}
@Test public void name() throws IOException, GitAPIException {
ObjectId head = repo.resolve("HEAD^{tree}");
ObjectId oldHead = repo.resolve("HEAD^^{tree}");
ObjectReader reader = repo.newObjectReader();
CanonicalTreeParser prevParser = new CanonicalTreeParser();
prevParser.reset(reader, oldHead);
CanonicalTreeParser headParser = new CanonicalTreeParser();
headParser.reset(reader, head);
List<DiffEntry> diffs = new Git(repo).diff()
.setNewTree(headParser)
.setOldTree(prevParser)
.call();
for (DiffEntry entry : diffs)
System.out.println(entry);
}
private File findSubFolder(String subFolder) {
return findFolder(new File(".").getAbsoluteFile(), subFolder);
}
private File findFolder(File folder, String subFolder) {
File candidateFolder = new File(folder, subFolder);
return candidateFolder.exists() && candidateFolder.isDirectory() ? candidateFolder : findFolder(folder.getParentFile(), subFolder);
}
}