mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 08:25:44 +01:00
added tag support
This commit is contained in:
@@ -38,7 +38,9 @@ package sonia.scm.repository;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.errors.NoHeadException;
|
||||
import org.eclipse.jgit.diff.DiffEntry;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.RepositoryCache;
|
||||
import org.eclipse.jgit.lib.RepositoryCache.FileKey;
|
||||
import org.eclipse.jgit.revwalk.RevCommit;
|
||||
@@ -55,7 +57,9 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -111,12 +115,13 @@ public class GitChangesetViewer implements ChangesetViewer
|
||||
List<Changeset> changesetList = new ArrayList<Changeset>();
|
||||
int counter = 0;
|
||||
TreeWalk treeWalk = new TreeWalk(gr);
|
||||
Map<ObjectId, String> tags = createTagMap(gr);
|
||||
|
||||
for (RevCommit commit : git.log().call())
|
||||
{
|
||||
if ((counter >= start) && (counter < start + max))
|
||||
{
|
||||
changesetList.add(createChangeset(treeWalk, commit));
|
||||
changesetList.add(createChangeset(treeWalk, tags, commit));
|
||||
}
|
||||
|
||||
counter++;
|
||||
@@ -196,13 +201,16 @@ public class GitChangesetViewer implements ChangesetViewer
|
||||
*
|
||||
*
|
||||
* @param treeWalk
|
||||
* @param tags
|
||||
* @param commit
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private Changeset createChangeset(TreeWalk treeWalk, RevCommit commit)
|
||||
private Changeset createChangeset(TreeWalk treeWalk,
|
||||
Map<ObjectId, String> tags,
|
||||
RevCommit commit)
|
||||
throws IOException
|
||||
{
|
||||
String id = commit.getName();
|
||||
@@ -227,6 +235,21 @@ public class GitChangesetViewer implements ChangesetViewer
|
||||
changeset.setModifications(modifications);
|
||||
}
|
||||
|
||||
String tag = tags.get(commit.getId());
|
||||
|
||||
if (tag != null)
|
||||
{
|
||||
List<String> tagList = changeset.getTags();
|
||||
|
||||
if (tagList == null)
|
||||
{
|
||||
tagList = new ArrayList<String>();
|
||||
changeset.setTags(tagList);
|
||||
}
|
||||
|
||||
changeset.getTags().add(tag);
|
||||
}
|
||||
|
||||
return changeset;
|
||||
}
|
||||
|
||||
@@ -278,6 +301,31 @@ public class GitChangesetViewer implements ChangesetViewer
|
||||
return modifications;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method description
|
||||
*
|
||||
*
|
||||
* @param repository
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private Map<ObjectId,
|
||||
String> createTagMap(org.eclipse.jgit.lib.Repository repository)
|
||||
{
|
||||
Map<ObjectId, String> tagMap = new HashMap<ObjectId, String>();
|
||||
Map<String, Ref> tags = repository.getTags();
|
||||
|
||||
if (tags != null)
|
||||
{
|
||||
for (Map.Entry<String, Ref> e : tags.entrySet())
|
||||
{
|
||||
tagMap.put(e.getValue().getObjectId(), e.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
return tagMap;
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** Field description */
|
||||
|
||||
Reference in New Issue
Block a user