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.gitexe;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.io.File;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.apache.maven.scm.ScmException;
29 import org.apache.maven.scm.ScmFileSet;
30 import org.apache.maven.scm.command.info.InfoScmResult;
31 import org.apache.maven.scm.provider.git.AbstractGitScmProvider;
32 import org.apache.maven.scm.provider.git.command.GitCommand;
33 import org.apache.maven.scm.provider.git.gitexe.command.add.GitAddCommand;
34 import org.apache.maven.scm.provider.git.gitexe.command.blame.GitBlameCommand;
35 import org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand;
36 import org.apache.maven.scm.provider.git.gitexe.command.changelog.GitChangeLogCommand;
37 import org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand;
38 import org.apache.maven.scm.provider.git.gitexe.command.checkout.GitCheckOutCommand;
39 import org.apache.maven.scm.provider.git.gitexe.command.diff.GitDiffCommand;
40 import org.apache.maven.scm.provider.git.gitexe.command.info.GitInfoCommand;
41 import org.apache.maven.scm.provider.git.gitexe.command.remoteinfo.GitRemoteInfoCommand;
42 import org.apache.maven.scm.provider.git.gitexe.command.remove.GitRemoveCommand;
43 import org.apache.maven.scm.provider.git.gitexe.command.status.GitStatusCommand;
44 import org.apache.maven.scm.provider.git.gitexe.command.tag.GitTagCommand;
45 import org.apache.maven.scm.provider.git.gitexe.command.untag.GitUntagCommand;
46 import org.apache.maven.scm.provider.git.gitexe.command.update.GitUpdateCommand;
47 import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
48 import org.apache.maven.scm.repository.ScmRepositoryException;
49
50
51
52
53 @Singleton
54 @Named("git")
55 public class GitExeScmProvider extends AbstractGitScmProvider {
56 private final Map<String, String> environmentVariables;
57
58
59
60
61
62
63 private static final String GIT_TERMINAL_PROMPT = "GIT_TERMINAL_PROMPT";
64
65 public GitExeScmProvider() {
66 environmentVariables = new HashMap<>();
67 }
68
69 @Override
70 public void setInteractive(boolean interactive) {
71 if (interactive) {
72
73 environmentVariables.remove(GIT_TERMINAL_PROMPT);
74 } else {
75 environmentVariables.put(GIT_TERMINAL_PROMPT, "0");
76 }
77 }
78
79
80
81
82 protected GitCommand getAddCommand() {
83 return new GitAddCommand();
84 }
85
86
87
88
89 protected GitCommand getBranchCommand() {
90 return new GitBranchCommand(environmentVariables);
91 }
92
93
94
95
96 protected GitCommand getChangeLogCommand() {
97 return new GitChangeLogCommand();
98 }
99
100
101
102
103 protected GitCommand getCheckInCommand() {
104 return new GitCheckInCommand(environmentVariables);
105 }
106
107
108
109
110 protected GitCommand getCheckOutCommand() {
111 return new GitCheckOutCommand(environmentVariables);
112 }
113
114
115
116
117 protected GitCommand getDiffCommand() {
118 return new GitDiffCommand();
119 }
120
121
122
123
124 protected GitCommand getExportCommand() {
125 return null;
126 }
127
128
129
130
131 protected GitCommand getRemoveCommand() {
132 return new GitRemoveCommand();
133 }
134
135
136
137
138 protected GitCommand getStatusCommand() {
139 return new GitStatusCommand();
140 }
141
142
143
144
145 protected GitCommand getTagCommand() {
146 return new GitTagCommand(environmentVariables);
147 }
148
149
150
151
152 protected GitCommand getUntagCommand() {
153 return new GitUntagCommand(environmentVariables);
154 }
155
156
157
158
159 protected GitCommand getUpdateCommand() {
160 return new GitUpdateCommand();
161 }
162
163
164
165
166 public GitCommand getInfoCommand() {
167 return new GitInfoCommand();
168 }
169
170
171
172
173 protected GitCommand getBlameCommand() {
174 return new GitBlameCommand();
175 }
176
177
178
179
180 protected GitCommand getRemoteInfoCommand() {
181 return new GitRemoteInfoCommand(environmentVariables);
182 }
183
184
185
186
187 protected String getRepositoryURL(File path) throws ScmException {
188
189
190
191 InfoScmResult result =
192 info(new GitScmProviderRepository(path.toPath().toUri().toASCIIString()), new ScmFileSet(path), null);
193
194 if (result.getInfoItems().size() != 1) {
195 throw new ScmRepositoryException("Cannot find URL: "
196 + (result.getInfoItems().size() == 0 ? "no" : "multiple") + " items returned by the info command");
197 }
198
199 return result.getInfoItems().get(0).getURL();
200 }
201
202 public void setEnvironmentVariable(String key, String value) {
203 environmentVariables.put(key, value);
204 }
205 }