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]

Reply via email to