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.JGitTransportConfigCallback;
32 import org.apache.maven.scm.provider.git.jgit.command.JGitUtils;
33 import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
34 import org.eclipse.jgit.api.Git;
35 import org.eclipse.jgit.lib.Ref;
36 import org.eclipse.jgit.transport.CredentialsProvider;
37
38 import java.util.ArrayList;
39 import java.util.Collection;
40 import java.util.List;
41
42
43
44
45
46 public class JGitListCommand
47 extends AbstractListCommand
48 implements GitCommand
49 {
50
51 @Override
52 protected ListScmResult executeListCommand( ScmProviderRepository repo, ScmFileSet fileSet, boolean recursive,
53 ScmVersion scmVersion )
54 throws ScmException
55 {
56
57 Git git = null;
58 try
59 {
60 git = JGitUtils.openRepo( fileSet.getBasedir() );
61 CredentialsProvider credentials =
62 JGitUtils.prepareSession( getLogger(), git, (GitScmProviderRepository) repo );
63
64 List<ScmFile> list = new ArrayList<ScmFile>();
65 Collection<Ref> lsResult = git.lsRemote().setCredentialsProvider( credentials )
66 .setTransportConfigCallback(
67 new JGitTransportConfigCallback( (GitScmProviderRepository) repo, getLogger() ) )
68 .call();
69 for ( Ref ref : lsResult )
70 {
71 getLogger().debug( ref.getObjectId().getName() + " " + ref.getTarget().getName() );
72 list.add( new ScmFile( ref.getName(), ScmFileStatus.CHECKED_IN ) );
73 }
74
75 return new ListScmResult( "JGit ls-remote", list );
76 }
77 catch ( Exception e )
78 {
79 throw new ScmException( "JGit ls-remote failure!", e );
80 }
81 finally
82 {
83 JGitUtils.closeRepo( git );
84 }
85 }
86 }