1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.provider.git.jgit.command.info;
20
21 import java.io.File;
22 import java.util.Collections;
23
24 import org.apache.commons.lang3.StringUtils;
25 import org.apache.maven.scm.CommandParameters;
26 import org.apache.maven.scm.ScmException;
27 import org.apache.maven.scm.ScmFileSet;
28 import org.apache.maven.scm.ScmResult;
29 import org.apache.maven.scm.command.AbstractCommand;
30 import org.apache.maven.scm.command.info.InfoItem;
31 import org.apache.maven.scm.command.info.InfoScmResult;
32 import org.apache.maven.scm.provider.ScmProviderRepository;
33 import org.apache.maven.scm.provider.git.command.GitCommand;
34 import org.apache.maven.scm.provider.git.jgit.command.JGitUtils;
35 import org.eclipse.jgit.api.Git;
36 import org.eclipse.jgit.lib.ObjectId;
37
38
39
40
41 public class JGitInfoCommand extends AbstractCommand implements GitCommand {
42 @Override
43 protected ScmResult executeCommand(
44 ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
45 Git git = null;
46 try {
47 File basedir = fileSet.getBasedir();
48
49 git = Git.open(basedir);
50
51 ObjectId objectId = git.getRepository().resolve("HEAD");
52
53 InfoItem infoItem = new InfoItem();
54 infoItem.setRevision(StringUtils.trim(objectId.name()));
55 infoItem.setURL(basedir.toPath().toUri().toASCIIString());
56
57 return new InfoScmResult(
58 Collections.singletonList(infoItem),
59 new ScmResult("JGit.resolve(HEAD)", "", objectId.toString(), true));
60 } catch (Exception e) {
61 throw new ScmException("JGit resolve failure!", e);
62 } finally {
63 JGitUtils.closeRepo(git);
64 }
65 }
66 }