kwin commented on code in PR #193:
URL: https://github.com/apache/maven-scm/pull/193#discussion_r1541522843
##########
maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommand.java:
##########
@@ -43,31 +49,34 @@ public class GitInfoCommand extends AbstractCommand
implements GitCommand {
protected ScmResult executeCommand(
ScmProviderRepository repository, ScmFileSet fileSet,
CommandParameters parameters) throws ScmException {
- GitInfoConsumer consumer = new GitInfoConsumer(fileSet);
- CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
-
- Commandline cli = createCommandLine(repository, fileSet, parameters);
+ Commandline baseCli =
GitCommandLineUtils.getBaseGitCommandLine(fileSet.getBasedir(), "log");
+ baseCli.createArg().setValue("-1"); // only most recent commit matters
+ baseCli.createArg().setValue("--no-merges"); // skip merge commits
+ baseCli.addArg(GitInfoConsumer.getFormatArgument());
- int exitCode = GitCommandLineUtils.execute(cli, consumer, stderr);
- if (exitCode != 0) {
- return new InfoScmResult(cli.toString(), "The git rev-parse
command failed.", stderr.getOutput(), false);
+ List<InfoItem> infoItems = new LinkedList<>();
+ if (fileSet.getFileList().isEmpty()) {
+ infoItems.add(executeInfoCommand(baseCli, parameters,
fileSet.getBasedir()));
+ } else {
+ // iterate over files
+ for (File scmFile : fileSet.getFileList()) {
+ Commandline cliClone = (Commandline) baseCli.clone();
+ cliClone.createArg().setFile(scmFile);
+ infoItems.add(executeInfoCommand(cliClone, parameters,
scmFile));
+ }
}
- return new InfoScmResult(cli.toString(), consumer.getInfoItems());
+ return new InfoScmResult(baseCli.toString(), infoItems);
}
- public static Commandline createCommandLine(
- ScmProviderRepository repository, ScmFileSet fileSet,
CommandParameters parameters) throws ScmException {
- Commandline cli =
GitCommandLineUtils.getBaseGitCommandLine(fileSet.getBasedir(), "rev-parse");
- cli.createArg().setValue("--verify");
- final int revLength = getRevisionLength(parameters);
- if (revLength > NO_REVISION_LENGTH) // set the --short key only if
revision length parameter is passed and
- // different from -1
- {
- cli.createArg().setValue("--short=" + revLength);
+ protected InfoItem executeInfoCommand(Commandline cli, CommandParameters
parameters, File scmFile)
+ throws ScmException {
+ GitInfoConsumer consumer = new GitInfoConsumer(scmFile.toPath(),
getRevisionLength(parameters));
+ CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
+ int exitCode = GitCommandLineUtils.execute(cli, consumer, stderr);
+ if (exitCode != 0) {
+ throw new ScmException("The git log command failed:" +
cli.toString() + " returned " + stderr.getOutput());
Review Comment:
fixed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]