diff --git a/RepositoryMinerForGit/.classpath b/RepositoryMinerForGit/.classpath new file mode 100644 index 0000000..90f81ed --- /dev/null +++ b/RepositoryMinerForGit/.classpath @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RepositoryMinerForGit/.gitignore b/RepositoryMinerForGit/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/RepositoryMinerForGit/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/RepositoryMinerForGit/.project b/RepositoryMinerForGit/.project new file mode 100644 index 0000000..285b2c0 --- /dev/null +++ b/RepositoryMinerForGit/.project @@ -0,0 +1,23 @@ + + + RepositoryMinerForGit + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/RepositoryMinerForGit/.settings/org.eclipse.jdt.core.prefs b/RepositoryMinerForGit/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..5723a0f --- /dev/null +++ b/RepositoryMinerForGit/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/RepositoryMinerForGit/.settings/org.eclipse.m2e.core.prefs b/RepositoryMinerForGit/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/RepositoryMinerForGit/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/RepositoryMinerForGit/pom.xml b/RepositoryMinerForGit/pom.xml new file mode 100644 index 0000000..6d451d6 --- /dev/null +++ b/RepositoryMinerForGit/pom.xml @@ -0,0 +1,14 @@ + + 4.0.0 + ntlab + jgit-test + 0.0.1-SNAPSHOT + JGitTest + + + org.eclipse.jgit + org.eclipse.jgit + 3.5.0.201409260305-r + + + \ No newline at end of file diff --git a/RepositoryMinerForGit/project b/RepositoryMinerForGit/project new file mode 160000 index 0000000..837fa76 --- /dev/null +++ b/RepositoryMinerForGit/project @@ -0,0 +1 @@ +Subproject commit 837fa76e815c12d7a0314f3a173c9cfa39f2bf63 diff --git a/RepositoryMinerForGit/src/main/java/Test.java b/RepositoryMinerForGit/src/main/java/Test.java new file mode 100644 index 0000000..0b7556b --- /dev/null +++ b/RepositoryMinerForGit/src/main/java/Test.java @@ -0,0 +1,100 @@ +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.api.errors.InvalidRemoteException; +import org.eclipse.jgit.api.errors.TransportException; +import org.eclipse.jgit.diff.DiffEntry; +import org.eclipse.jgit.diff.DiffFormatter; +import org.eclipse.jgit.diff.RawTextComparator; +import org.eclipse.jgit.internal.storage.file.FileRepository; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectLoader; +import org.eclipse.jgit.lib.ObjectReader; +import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revplot.PlotCommit; +import org.eclipse.jgit.revplot.PlotCommitList; +import org.eclipse.jgit.revplot.PlotLane; +import org.eclipse.jgit.revplot.PlotWalk; +import org.eclipse.jgit.revwalk.RevCommit; +import org.eclipse.jgit.revwalk.RevObject; +import org.eclipse.jgit.storage.file.FileRepositoryBuilder; +import org.eclipse.jgit.treewalk.CanonicalTreeParser; +import org.eclipse.jgit.util.io.DisabledOutputStream; + +public class Test { + + public static void main(String[] args) { + // TODO Auto-generated method stub + try { + Repository repo = new FileRepository( "./project/.git" ); + Git git = new Git( repo ); + + if( git != null ){ + //. git clone + File project = new File( "./project" ); + git.cloneRepository().setURI( "http://nitta-lab-www.is.konan-u.ac.jp/gitbucket/git/nitta-lab-2020/org.ntlab.amaryllis.server.git" ).setDirectory( project ).call(); + } + + PlotWalk revWalk = new PlotWalk(repo); + ObjectId rootId = repo.resolve("HEAD"); + RevCommit root = revWalk.parseCommit(rootId); + revWalk.markStart(root); + + // �R�~�b�g�R�����g + PlotCommitList plotCommitList = new PlotCommitList(); + plotCommitList.source(revWalk); + plotCommitList.fillTo(Integer.MAX_VALUE); + + for (PlotCommit c: plotCommitList) { + // �R�~�b�g���b�Z�[�W + System.out.println("�R�~�b�g���b�Z�[�W: " + c.getFullMessage()); + ObjectId curId = c.getTree(); + if (c.getParentCount() == 0) { + // �����R�~�b�g + System.out.println("id:" + c.getId()); + } else { + // �e�R�~�b�g�Ƃ̍��� + ObjectId parentId = c.getParents()[0].getTree(); + System.out.println("id:" + c.getId() + " <== " + c.getParents()[0].getId()); + + DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE); + df.setRepository(repo); + df.setDiffComparator(RawTextComparator.DEFAULT); + df.setDetectRenames(true); + + ObjectReader reader = repo.newObjectReader(); + CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); + newTreeIter.reset(reader, curId); + CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); + oldTreeIter.reset(reader, parentId); + List entries = df.scan( oldTreeIter, newTreeIter ); + + for( DiffEntry entry : entries ) { + // �t�@�C�����̏�� + System.out.println("�p�X: " + entry.getNewPath()); + System.out.println("�ύX�̎��: " + entry.getChangeType()); +// System.out.println("�ύX�̓��e: " + entry); + } + } + System.out.println("====="); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidRemoteException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (TransportException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (GitAPIException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +}