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