1 package org.apache.maven.scm.provider.git.jgit.command.list;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.ScmException;
23 import org.apache.maven.scm.ScmFile;
24 import org.apache.maven.scm.ScmFileSet;
25 import org.apache.maven.scm.ScmFileStatus;
26 import org.apache.maven.scm.ScmVersion;
27 import org.apache.maven.scm.command.list.AbstractListCommand;
28 import org.apache.maven.scm.command.list.ListScmResult;
29 import org.apache.maven.scm.provider.ScmProviderRepository;
30 import org.apache.maven.scm.provider.git.command.GitCommand;
31 import org.apache.maven.scm.provider.git.jgit.command.JGitUtils;
32 import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
33 import org.eclipse.jgit.api.Git;
34 import org.eclipse.jgit.lib.Ref;
35 import org.eclipse.jgit.transport.CredentialsProvider;
36
37 import java.util.ArrayList;
38 import java.util.Collection;
39 import java.util.List;
40
41
42
43
44
45 public class JGitListCommand
46 extends AbstractListCommand
47 implements GitCommand
48 {
49
50 @Override
51 protected ListScmResult executeListCommand( ScmProviderRepository repo, ScmFileSet fileSet, boolean recursive,
52 ScmVersion scmVersion )
53 throws ScmException
54 {
55
56 Git git = null;
57 try
58 {
59 git = Git.open( fileSet.getBasedir() );
60 CredentialsProvider credentials =
61 JGitUtils.prepareSession( getLogger(), git, (GitScmProviderRepository) repo );
62
63 List<ScmFile> list = new ArrayList<ScmFile>();
64 Collection<Ref> lsResult = git.lsRemote().setCredentialsProvider( credentials ).call();
65 for ( Ref ref : lsResult )
66 {
67 getLogger().debug( ref.getObjectId().getName() + " " + ref.getTarget().getName() );
68 list.add( new ScmFile( ref.getName(), ScmFileStatus.CHECKED_IN ) );
69 }
70
71 return new ListScmResult( "JGit ls-remote", list );
72 }
73 catch ( Exception e )
74 {
75 throw new ScmException( "JGit ls-remote failure!", e );
76 }
77 finally
78 {
79 JGitUtils.closeRepo( git );
80 }
81 }
82 }