1 package org.apache.maven.scm.provider.git.jgit.command.add;
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.ScmResult;
26 import org.apache.maven.scm.command.add.AbstractAddCommand;
27 import org.apache.maven.scm.command.add.AddScmResult;
28 import org.apache.maven.scm.provider.ScmProviderRepository;
29 import org.apache.maven.scm.provider.git.command.GitCommand;
30 import org.apache.maven.scm.provider.git.jgit.command.JGitUtils;
31 import org.eclipse.jgit.api.Git;
32
33 import java.util.List;
34
35
36
37
38
39
40 public class JGitAddCommand
41 extends AbstractAddCommand
42 implements GitCommand
43 {
44
45
46
47 protected ScmResult executeAddCommand( ScmProviderRepository repo, ScmFileSet fileSet, String message,
48 boolean binary )
49 throws ScmException
50 {
51
52 if ( fileSet.getFileList().isEmpty() )
53 {
54 throw new ScmException( "You must provide at least one file/directory to add (e.g. -Dincludes=...)" );
55 }
56 Git git = null;
57 try
58 {
59 git = JGitUtils.openRepo( fileSet.getBasedir() );
60
61 List<ScmFile> addedFiles = JGitUtils.addAllFiles( git, fileSet );
62
63 if ( getLogger().isDebugEnabled() )
64 {
65 for ( ScmFile scmFile : addedFiles )
66 {
67 getLogger().info( "added file: " + scmFile );
68 }
69 }
70
71 return new AddScmResult( "JGit add", addedFiles );
72
73 }
74 catch ( Exception e )
75 {
76 throw new ScmException( "JGit add failure!", e );
77 }
78 finally
79 {
80 JGitUtils.closeRepo( git );
81 }
82
83 }
84
85 }