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