fix wrong modification list in git getChangeset

This commit is contained in:
Sebastian Sdorra
2012-01-19 15:56:34 +01:00
parent 6a33e30b3b
commit 06883d5f14
2 changed files with 50 additions and 2 deletions

View File

@@ -41,9 +41,13 @@ import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.EmptyTreeIterator;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------
@@ -63,6 +67,14 @@ import java.util.Map;
public class GitChangesetConverter implements Closeable
{
/**
* the logger for GitChangesetConverter
*/
private static final Logger logger =
LoggerFactory.getLogger(GitChangesetConverter.class);
//~--- constructors ---------------------------------------------------------
/**
* Constructs ...
*
@@ -72,8 +84,23 @@ public class GitChangesetConverter implements Closeable
*/
public GitChangesetConverter(org.eclipse.jgit.lib.Repository repository,
int idLength)
{
this(repository, null, idLength);
}
/**
* Constructs ...
*
*
* @param repository
* @param revWalk
* @param idLength
*/
public GitChangesetConverter(org.eclipse.jgit.lib.Repository repository,
RevWalk revWalk, int idLength)
{
this.idLength = idLength;
this.revWalk = revWalk;
createTagMap(repository);
treeWalk = new TreeWalk(repository);
}
@@ -195,7 +222,14 @@ public class GitChangesetConverter implements Closeable
if (commit.getParentCount() > 0)
{
RevTree tree = commit.getParent(0).getTree();
RevCommit parent = commit.getParent(0);
RevTree tree = parent.getTree();
if ((tree == null) && (revWalk != null))
{
revWalk.parseHeaders(parent);
tree = parent.getTree();
}
if (tree != null)
{
@@ -203,11 +237,21 @@ public class GitChangesetConverter implements Closeable
}
else
{
if (logger.isWarnEnabled())
{
logger.warn("no parent at position 0 for commit {}", commit);
}
treeWalk.addTree(new EmptyTreeIterator());
}
}
else
{
if (logger.isWarnEnabled())
{
logger.warn("no parent available for commit {}", commit);
}
treeWalk.addTree(new EmptyTreeIterator());
}
@@ -258,6 +302,9 @@ public class GitChangesetConverter implements Closeable
/** Field description */
private int idLength;
/** Field description */
private RevWalk revWalk;
/** Field description */
private Map<ObjectId, String> tags;

View File

@@ -40,6 +40,7 @@ import org.eclipse.jgit.api.errors.NoHeadException;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -115,7 +116,7 @@ public class GitChangesetViewer implements ChangesetViewer
if (commit != null)
{
converter = new GitChangesetConverter(gr, GitUtil.ID_LENGTH);
converter = new GitChangesetConverter(gr, revWalk, GitUtil.ID_LENGTH);
changeset = converter.createChangeset(commit);
}
else if (logger.isWarnEnabled())