import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.List;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api. LogCommand;
import org.eclipse.jgit.diff. DiffEntry;
import org.eclipse.jgit.diff. DiffFormatter;
import org.eclipse.jgit.diff. RawTextComparator;
import org.eclipse.jgit.lib. Repository;
import org.eclipse.jgit.revwalk. RevCommit;
import org.eclipse.jgit.revwalk. RevWalk;
import org.eclipse.jgit.lib. Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk. RevSort;
import org.eclipse.jgit.revwalk. RevTree;
import org.eclipse.jgit.treewalk. TreeWalk;
import org.eclipse.jgit.treewalk. filter.PathFilter;
import org.eclipse.jgit.treewalk. filter.TreeFilter;
/**
*
* @author test
*/
public class GitLogNew {
public static void main(String[] args) {
try {
test4();
//System.out.println("------- ------------------------------ ---");
} catch (Exception e) {
System.out.println(" ERROR " + e.toString());
}
}
public static void test4(){
try {
File gitWorkDir = new File("/home/test/GITTEST/");
Git git = null;
git = Git.open(gitWorkDir);
Repository repo = git.getRepository();
LogCommand log = git.log();
log.addPath("lakmal.txt");
ObjectId lastCommitId = repo.resolve(Constants.HEAD);
RevWalk rw = new RevWalk(repo);
RevCommit parent = rw.parseCommit(lastCommitId);
rw.sort(RevSort.COMMIT_TIME_ DESC);
rw.markStart(parent);
log.setMaxCount(3);
Iterable<RevCommit> logMsgs = log.call();
for (RevCommit commit : logMsgs) {
System.out.println("\n\n\n\n\ n\n\n\n\n\n------------------- ---------------------");
System.out.println("commit " + commit);
System.out.println("commit. toObjectId() " + commit.toObjectId());
System.out.println(" commit.getAuthorIdent(). getName() " + commit.getAuthorIdent(). getName());
System.out.println("" + commit.getAuthorIdent(). getWhen());
System.out.println(" commit.getFullMessage())--- " + commit.getFullMessage());
System.out.println("---DIF STARTING ------------------------");
//RevTree tree = commit.getTree(); DisabledOutputStream.INSTANCE
ByteArrayOutputStream out = new ByteArrayOutputStream();
DiffFormatter df = new DiffFormatter(out); // DisabledOutputStream.INSTANCE
df.setRepository(repo);
df.setDiffComparator( RawTextComparator.DEFAULT);
df.setDetectRenames(true);
//df.format(parent.getTree(), commit.getTree());
List<DiffEntry> diffs =df.scan(commit.getTree(), commit.getParent(0).getTree()) ; //df.scan(parent.getTree(), commit.getTree());
for (DiffEntry diff : diffs) {
//System.out.println( getCommitMessage());
//df.format(diff);
System.out.println(" changeType=" + diff.getChangeType().name()
+ " \n newMode=" + diff.getNewMode().getBits()
+ " \nnewPath=" + diff.getNewPath()
+ " \nold path " + diff.getOldPath()
+ " \nHash code " + diff.hashCode()
+ " \nString " + diff.toString()
+ " \nchange " + diff.getChangeType().toString( )
);
df.format(diff);
String diffText = out.toString("UTF-8");
System.out.println(diffText);
}
df.release();out.close();
parent = commit;
}
}catch (Exception e) {
System.out.println("no head exception : " + e);
}
}
}