You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2012/02/06 20:56:44 UTC

svn commit: r1241134 - /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/checkout/GitCheckOutCommand.java

Author: struberg
Date: Mon Feb  6 19:56:44 2012
New Revision: 1241134

URL: http://svn.apache.org/viewvc?rev=1241134&view=rev
Log:
SCM-584 immediately checkout a given branch with --branch

thanks to Sebastian Annies for providing this fix! 
Applied with slight fixes and improvements. 

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/command/checkout/GitCheckOutCommand.java

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/command/checkout/GitCheckOutCommand.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/checkout/GitCheckOutCommand.java?rev=1241134&r1=1241133&r2=1241134&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/command/checkout/GitCheckOutCommand.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/command/checkout/GitCheckOutCommand.java Mon Feb  6 19:56:44 2012
@@ -19,6 +19,7 @@ package org.apache.maven.scm.provider.gi
  * under the License.
  */
 
+import org.apache.maven.scm.ScmBranch;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
 import org.apache.maven.scm.ScmFileStatus;
@@ -84,7 +85,7 @@ public class GitCheckOutCommand
             }
 
             // no git repo seems to exist, let's clone the original repo
-            Commandline clClone = createCloneCommand( repository, fileSet.getBasedir() );
+            Commandline clClone = createCloneCommand( repository, fileSet.getBasedir(), version );
 
             exitCode = GitCommandLineUtils.execute( clClone, stdout, stderr, getLogger() );
             if ( exitCode != 0 )
@@ -103,7 +104,7 @@ public class GitCheckOutCommand
             && result.getBranches().size() > 0 )
         {
             // git repo exists, so we must git-pull the changes
-            Commandline clPull = createPullCommand( repository, fileSet.getBasedir(), version );
+            Commandline clPull = createPullCommand(repository, fileSet.getBasedir(), version);
 
             exitCode = GitCommandLineUtils.execute( clPull, stdout, stderr, getLogger() );
             if ( exitCode != 0 )
@@ -161,10 +162,18 @@ public class GitCheckOutCommand
     /**
      * create a git-clone repository command
      */
-    private Commandline createCloneCommand( GitScmProviderRepository repository, File workingDirectory )
+    private Commandline createCloneCommand( GitScmProviderRepository repository, File workingDirectory,
+                                            ScmVersion version )
     {
         Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory.getParentFile(), "clone" );
 
+        if ( version != null && (version instanceof ScmBranch) ) {
+
+            cl.createArg().setValue( "--branch" );
+
+            cl.createArg().setValue( version.getName() );
+        }
+
         cl.createArg().setValue( repository.getFetchUrl() );
 
         cl.createArg().setFile( workingDirectory );