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.remove;
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.remove.AbstractRemoveCommand;
29 import org.apache.maven.scm.command.remove.RemoveScmResult;
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 public class JGitRemoveCommand extends AbstractRemoveCommand implements GitCommand {
41
42 @Override
43 protected ScmResult executeRemoveCommand(ScmProviderRepository repository, ScmFileSet fileSet, String message)
44 throws ScmException {
45
46 if (fileSet.getFileList().isEmpty()) {
47 throw new ScmException("You must provide at least one file/directory to remove");
48 }
49 Git git = null;
50 try {
51 git = JGitUtils.openRepo(fileSet.getBasedir());
52
53 List<ScmFile> removedFiles = JGitUtils.removeAllFiles(git, fileSet);
54
55 if (logger.isDebugEnabled()) {
56 for (ScmFile scmFile : removedFiles) {
57 logger.info("Removed file: " + scmFile);
58 }
59 }
60
61 return new RemoveScmResult("JGit remove", removedFiles);
62
63 } catch (IOException | GitAPIException e) {
64 throw new ScmException("JGit remove failure!", e);
65 } finally {
66 JGitUtils.closeRepo(git);
67 }
68 }
69 }