Author: olamy
Date: Wed Jan 26 10:50:40 2011
New Revision: 1063671
URL: http://svn.apache.org/viewvc?rev=1063671&view=rev
Log:
[SCM-599] Implements a git info command
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/
maven/scm/trunk/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
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
(with props)
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
(with props)
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
maven/scm/trunk/pom.xml
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java?rev=1063671&r1=1063670&r2=1063671&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-git-commons/src/main/java/org/apache/maven/scm/provider/git/AbstractGitScmProvider.java
Wed Jan 26 10:50:40 2011
@@ -19,6 +19,10 @@ package org.apache.maven.scm.provider.gi
* under the License.
*/
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.maven.scm.CommandParameters;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
@@ -31,6 +35,7 @@ import org.apache.maven.scm.command.chec
import org.apache.maven.scm.command.checkout.CheckOutScmResult;
import org.apache.maven.scm.command.diff.DiffScmResult;
import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.info.InfoScmResult;
import org.apache.maven.scm.command.list.ListScmResult;
import org.apache.maven.scm.command.remove.RemoveScmResult;
import org.apache.maven.scm.command.status.StatusScmResult;
@@ -39,15 +44,10 @@ import org.apache.maven.scm.command.upda
import org.apache.maven.scm.provider.AbstractScmProvider;
import org.apache.maven.scm.provider.ScmProviderRepository;
import org.apache.maven.scm.provider.git.command.GitCommand;
-import org.apache.maven.scm.provider.git.command.info.GitInfoScmResult;
import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepositoryException;
import org.apache.maven.scm.repository.UnknownRepositoryStructure;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* SCM Provider for git
*
@@ -303,12 +303,12 @@ public abstract class AbstractGitScmProv
protected abstract GitCommand getInfoCommand();
- public GitInfoScmResult info( ScmProviderRepository repository, ScmFileSet
fileSet, CommandParameters parameters )
+ public InfoScmResult info( ScmProviderRepository repository, ScmFileSet
fileSet, CommandParameters parameters )
throws ScmException
{
GitCommand cmd = getInfoCommand();
- return (GitInfoScmResult) executeCommand( cmd, repository, fileSet,
parameters );
+ return (InfoScmResult) executeCommand( cmd, repository, fileSet,
parameters );
}
/** {@inheritDoc} */
Modified:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java?rev=1063671&r1=1063670&r2=1063671&view=diff
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
(original)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/GitExeScmProvider.java
Wed Jan 26 10:50:40 2011
@@ -23,9 +23,9 @@ import java.io.File;
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.info.InfoScmResult;
import org.apache.maven.scm.provider.git.AbstractGitScmProvider;
import org.apache.maven.scm.provider.git.command.GitCommand;
-import org.apache.maven.scm.provider.git.command.info.GitInfoScmResult;
import org.apache.maven.scm.provider.git.gitexe.command.add.GitAddCommand;
import org.apache.maven.scm.provider.git.gitexe.command.blame.GitBlameCommand;
import
org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand;
@@ -33,11 +33,13 @@ import org.apache.maven.scm.provider.git
import
org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand;
import
org.apache.maven.scm.provider.git.gitexe.command.checkout.GitCheckOutCommand;
import org.apache.maven.scm.provider.git.gitexe.command.diff.GitDiffCommand;
+import org.apache.maven.scm.provider.git.gitexe.command.info.GitInfoCommand;
import org.apache.maven.scm.provider.git.gitexe.command.list.GitListCommand;
import
org.apache.maven.scm.provider.git.gitexe.command.remove.GitRemoveCommand;
import
org.apache.maven.scm.provider.git.gitexe.command.status.GitStatusCommand;
import org.apache.maven.scm.provider.git.gitexe.command.tag.GitTagCommand;
import
org.apache.maven.scm.provider.git.gitexe.command.update.GitUpdateCommand;
+import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository;
import org.apache.maven.scm.repository.ScmRepositoryException;
/**
@@ -123,7 +125,7 @@ public class GitExeScmProvider
/** {@inheritDoc} */
public GitCommand getInfoCommand()
{
- return null; //X TODO
+ return new GitInfoCommand();
}
/** {@inheritDoc} */
@@ -138,7 +140,8 @@ public class GitExeScmProvider
{
// Note: I need to supply just 1 absolute path, but ScmFileSet won't
let me without
// a basedir (which isn't used here anyway), so use a dummy file.
- GitInfoScmResult result = info( null, new ScmFileSet( new File( "" ),
path ), null );
+ // and a dummy ScmProviderRepository
+ InfoScmResult result = info( new
GitScmProviderRepository(path.getPath()), new ScmFileSet( path ), null );
if ( result.getInfoItems().size() != 1 )
{
Added:
maven/scm/trunk/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
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/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?rev=1063671&view=auto
==============================================================================
---
maven/scm/trunk/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
(added)
+++
maven/scm/trunk/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
Wed Jan 26 10:50:40 2011
@@ -0,0 +1,43 @@
+package org.apache.maven.scm.provider.git.gitexe.command.info;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.AbstractCommand;
+import org.apache.maven.scm.command.info.InfoScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.git.command.GitCommand;
+import org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils;
+import org.codehaus.plexus.util.cli.CommandLineUtils;
+import org.codehaus.plexus.util.cli.Commandline;
+
+/**
+ * @author Olivier Lamy
+ *
+ */
+public class GitInfoCommand
+ extends AbstractCommand
+ implements GitCommand
+{
+
+ @Override
+ protected ScmResult executeCommand( ScmProviderRepository repository,
ScmFileSet fileSet,
+ CommandParameters parameters )
+ throws ScmException
+ {
+ Commandline cli = GitCommandLineUtils.getBaseGitCommandLine(
fileSet.getBasedir(), "show" );
+ GitInfoConsumer consumer = new GitInfoConsumer( getLogger(), fileSet );
+ CommandLineUtils.StringStreamConsumer stderr = new
CommandLineUtils.StringStreamConsumer();
+
+ int exitCode = GitCommandLineUtils.execute( cli, consumer, stderr,
getLogger() );
+ if ( exitCode != 0 )
+ {
+ throw new UnsupportedOperationException();
+ }
+ return new InfoScmResult( cli.toString(), consumer.getInfoItems() );
+ }
+
+
+
+}
Propchange:
maven/scm/trunk/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
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/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
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java?rev=1063671&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
Wed Jan 26 10:50:40 2011
@@ -0,0 +1,63 @@
+/**
+ *
+ */
+package org.apache.maven.scm.provider.git.gitexe.command.info;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.command.info.InfoItem;
+import org.apache.maven.scm.log.ScmLogger;
+import org.apache.maven.scm.util.AbstractConsumer;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author Olivier Lamy
+ *
+ */
+public class GitInfoConsumer
+ extends AbstractConsumer
+{
+
+ //$ git show
+ //commit cd3c0dfacb65955e6fbb35c56cc5b1bf8ce4f767
+
+ private List<InfoItem> infoItems = new ArrayList<InfoItem>( 1 );
+
+ private ScmFileSet scmFileSet;
+ public GitInfoConsumer( ScmLogger logger, ScmFileSet scmFileSet )
+ {
+ super( logger );
+ this.scmFileSet = scmFileSet;
+ }
+
+ /**
+ * @see
org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
+ */
+ public void consumeLine( String line )
+ {
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "consume line " + line );
+ }
+
+ if ( infoItems.isEmpty() )
+ {
+ if ( !StringUtils.isEmpty( line ) && line.startsWith( "commit" ) )
+ {
+ InfoItem infoItem = new InfoItem();
+ infoItem.setRevision( StringUtils.trim( line.substring(
"commit".length() ) ) );
+ infoItem.setURL( scmFileSet.getBasedir().getPath() );
+ infoItems.add( infoItem );
+ }
+ }
+
+ }
+
+ public List<InfoItem> getInfoItems()
+ {
+ return infoItems;
+ }
+
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java?rev=1063671&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
Wed Jan 26 10:50:40 2011
@@ -0,0 +1,46 @@
+package org.apache.maven.scm.provider.git.gitexe.command.info;
+
+import java.io.File;
+
+import org.apache.maven.scm.CommandParameters;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmTestCase;
+import org.apache.maven.scm.command.info.InfoScmResult;
+import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.git.GitScmTestUtils;
+import org.apache.maven.scm.provider.git.gitexe.GitExeScmProvider;
+import org.codehaus.plexus.PlexusTestCase;
+
+public class GitInfoCommandTckTest
+ extends ScmTestCase
+{
+
+ public void testInfoCommand() throws Exception
+ {
+ GitScmTestUtils.initRepo( "src/test/resources/git/info",
getRepositoryRoot(), getWorkingCopy() );
+ GitExeScmProvider provider = (GitExeScmProvider)
getScmManager().getProviderByUrl( getScmUrl() );
+ ScmProviderRepository repository = provider.makeProviderScmRepository(
getRepositoryRoot() );
+ assertNotNull( repository );
+ InfoScmResult result = provider.info( repository, new ScmFileSet(
getRepositoryRoot() ), new CommandParameters() );
+ assertNotNull( result );
+ assertEquals( "cd3c0dfacb65955e6fbb35c56cc5b1bf8ce4f767",
result.getInfoItems().get( 0 ).getRevision() );
+ //
+ }
+
+ protected File getRepositoryRoot()
+ {
+ return PlexusTestCase.getTestFile(
"target/scm-test/repository/git/info" );
+ }
+
+ public String getScmUrl()
+ throws Exception
+ {
+ return GitScmTestUtils.getScmUrl( getRepositoryRoot(), "git" );
+ }
+
+ protected File getWorkingCopy()
+ {
+ return PlexusTestCase.getTestFile( "target/scm-test/git/info" );
+ }
+
+}
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/java/org/apache/maven/scm/provider/git/gitexe/command/info/GitInfoCommandTckTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt?rev=1063671&view=auto
==============================================================================
---
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
(added)
+++
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
Wed Jan 26 10:50:40 2011
@@ -0,0 +1 @@
+a simple test file
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/info/foo.txt
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/scm/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/maven/scm/trunk/pom.xml?rev=1063671&r1=1063670&r2=1063671&view=diff
==============================================================================
--- maven/scm/trunk/pom.xml (original)
+++ maven/scm/trunk/pom.xml Wed Jan 26 10:50:40 2011
@@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>maven-parent</artifactId>
- <version>18</version>
+ <version>19-SNAPSHOT</version>
<relativePath>../pom/maven/pom.xml</relativePath>
</parent>
@@ -298,12 +298,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.7.1</version>
+ <version>2.7.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
- <version>2.7.1</version>
+ <version>2.7.2</version>
</plugin>
</plugins>
</pluginManagement>
@@ -393,4 +393,18 @@
</profile>
</profiles>
+
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <url>https://repository.apache.org/content/groups/snapshots-group/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
</project>