Getting revisions for a specific folder/file [message #636850] |
Wed, 03 November 2010 05:54 |
Adar Messages: 4 Registered: November 2010 |
Junior Member |
|
|
Hi,
I'm trying to get the revisions for a specific folder and for a specific folder, and for a specific folder (two separate use cases). For this purpose I tried to define a tree filter, for a folder named 'f1'. When I defined the filter with a full or relative path ("c:/temp/f1" or "/f1"), I got no revisions at all. When I only gave the folder name ("f1"), I got all the revisions, not just the ones belonging to the specific folder. Code attached below.
Thanks,
Adar
private static void walkRevisions(final Repository repository){
RevWalk rw = new RevWalk(repository);
ObjectId objHead;
try {
objHead = repository.resolve("HEAD");
rw.markStart(rw.parseCommit(objHead));
Collection<String> strCol = new ArrayList<String>();
strCol.add("f1");
rw.setTreeFilter(AndTreeFilter.create(PathFilterGroup.createFromStrings(strCol), TreeFilter.ALL));//, TreeFilter.ANY_DIFF));
System.out.println(repository.getFullBranch());
System.out.println(repository.getRef(Constants.HEAD).getName());
System.out.println("---------------");
RevCommit prevC = null;
for (RevCommit c : rw) {
if (prevC == null){
prevC = c;
continue;
}
//RevTree rt = c.getTree();
TreeWalk tw =
new TreeWalk(repository);
System.out.println(c.getCommitTime() + " " + c.getFullMessage());
FileDiff[] diffs = FileDiff.compute(tw, c, prevC, true);
for (FileDiff fd: diffs){
System.out.println(fd.getPath() + " " + fd.getChange() + fd.getModes());
}
System.out.println();
prevC = c;
}
} catch (AmbiguousObjectException e2) {
e2.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03406 seconds