Author: struberg Date: Fri Feb 11 23:39:29 2011 New Revision: 1069986 URL: http://svn.apache.org/viewvc?rev=1069986&view=rev Log: [SCM-606] rewrite GitBlameCommand to use git-blame --porcelain
Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-3.out maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-empty.out maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-new-file.out 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/blame/GitBlameCommand.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/command/blame/GitBlameConsumer.java 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/blame/GitBlameConsumerTest.java maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out 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/blame/GitBlameCommand.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/blame/GitBlameCommand.java?rev=1069986&r1=1069985&r2=1069986&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/blame/GitBlameCommand.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/blame/GitBlameCommand.java Fri Feb 11 23:39:29 2011 @@ -54,7 +54,7 @@ public class GitBlameCommand int exitCode = GitCommandLineUtils.execute( cl, consumer, stderr, getLogger() ); if ( exitCode != 0 ) { - throw new UnsupportedOperationException(); + return new BlameScmResult(cl.toString(), "The git blame command failed.", stderr.getOutput(), false); } return new BlameScmResult( cl.toString(), consumer.getLines() ); } @@ -62,8 +62,7 @@ public class GitBlameCommand public static Commandline createCommandLine( File workingDirectory, String filename ) { Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory, "blame" ); - cl.createArg().setValue( "-c" ); - cl.createArg().setValue( "-l" ); + cl.createArg().setValue( "--porcelain" ); cl.createArg().setValue( filename ); return cl; } 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/blame/GitBlameConsumer.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/blame/GitBlameConsumer.java?rev=1069986&r1=1069985&r2=1069986&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/blame/GitBlameConsumer.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/blame/GitBlameConsumer.java Fri Feb 11 23:39:29 2011 @@ -23,22 +23,32 @@ import org.apache.maven.scm.command.blam import org.apache.maven.scm.log.ScmLogger; import org.apache.maven.scm.util.AbstractConsumer; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** + * Parses the --porcelain format of git-blame + * * @author Evgeny Mandrikov * @author Olivier Lamy + * @author Mark Struberg * @since 1.4 */ public class GitBlameConsumer extends AbstractConsumer { - private static final String GIT_TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss Z"; + private final static String GIT_COMMITTER_PREFIX = "committer"; + private final static String GIT_COMMITTER = GIT_COMMITTER_PREFIX + " "; + private final static String GIT_COMMITTER_TIME = GIT_COMMITTER_PREFIX + "-time "; + private List<BlameLine> lines = new ArrayList<BlameLine>(); + private String revision = null; + private String author = null; + private Date time = null; + + private boolean expectRevisionLine = true; + public GitBlameConsumer( ScmLogger logger ) { super( logger ); @@ -46,17 +56,53 @@ public class GitBlameConsumer public void consumeLine( String line ) { - String parts[] = line.split( "\t", 4 ); - String revision = parts[0]; - String author = parts[1].substring( 1 ); - String dateTimeStr = parts[2]; + if ( line == null ) + { + return; + } - Date dateTime = parseDate( dateTimeStr, null, GIT_TIMESTAMP_PATTERN ); - getLines().add( new BlameLine( dateTime, revision, author ) ); + if (expectRevisionLine) + { + // this is the revision line + String parts[] = line.split( "\\s", 4 ); + + if ( parts.length >= 1) + { + revision = parts[0]; + } - if ( getLogger().isDebugEnabled() ) + expectRevisionLine = false; + } + else { - getLogger().debug( author + " " + dateTimeStr ); + if ( line.startsWith( GIT_COMMITTER ) ) + { + author = line.substring( GIT_COMMITTER.length() ); + return; + } + + if ( line.startsWith( GIT_COMMITTER_TIME ) ) + { + String timeStr = line.substring( GIT_COMMITTER_TIME.length() ); + time = new Date( Long.parseLong( timeStr ) * 1000L ); + return; + } + + + if ( line.startsWith( "\t" ) ) + { + // this is the content line. + // we actually don't need the content, but this is the right time to add the blame line + getLines().add( new BlameLine( time, revision, author ) ); + + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( author + " " + time.toGMTString() ); + } + + expectRevisionLine = true; + } + } } Modified: 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/blame/GitBlameConsumerTest.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/blame/GitBlameConsumerTest.java?rev=1069986&r1=1069985&r2=1069986&view=diff ============================================================================== --- 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/blame/GitBlameConsumerTest.java (original) +++ 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/blame/GitBlameConsumerTest.java Fri Feb 11 23:39:29 2011 @@ -8,16 +8,85 @@ import org.codehaus.plexus.PlexusTestCas import java.io.BufferedReader; import java.io.File; import java.io.FileReader; +import java.io.IOException; +/** + * Test the {@link GitBlameConsumer} in various different situations. + * Depending on the underlying operating system we might get + * slightly different output from a <pre>git blame</pre> commandline invocation. + */ public class GitBlameConsumerTest extends PlexusTestCase { + public void testConsumerEasy() + throws Exception + { + GitBlameConsumer consumer = consumeFile( "/src/test/resources/git/blame/git-blame-3.out" ); + + Assert.assertEquals( 36, consumer.getLines().size() ); + + BlameLine blameLine = (BlameLine) consumer.getLines().get( 11 ); + Assert.assertEquals( "e670863b2b03e158c59f34af1fee20f91b2bd852", blameLine.getRevision() ); + Assert.assertEquals( "Mark Struberg", blameLine.getAuthor() ); + Assert.assertNotNull( blameLine.getDate() ); + } + + public void testConsumer() throws Exception { + GitBlameConsumer consumer = consumeFile( "/src/test/resources/git/blame/git-blame.out" ); + + Assert.assertEquals( 187, consumer.getLines().size() ); + + BlameLine blameLine = (BlameLine) consumer.getLines().get( 11 ); + Assert.assertEquals( "e670863b2b03e158c59f34af1fee20f91b2bd852", blameLine.getRevision() ); + Assert.assertEquals( "Mark Struberg", blameLine.getAuthor() ); + Assert.assertNotNull( blameLine.getDate() ); + } + + /** + * Test what happens if a git-blame command got invoked on a + * file which has no content. + */ + public void testConsumerEmptyFile() + throws Exception + { + GitBlameConsumer consumer = consumeFile( "/src/test/resources/git/blame/git-blame-empty.out" ); + + Assert.assertEquals( 0, consumer.getLines().size() ); + } + + + /** + * Test what happens if a git-blame command got invoked on a + * file which didn't got added to the git repo yet. + */ + public void testConsumerOnNewFile() + throws Exception + { + GitBlameConsumer consumer = consumeFile( "/src/test/resources/git/blame/git-blame-new-file.out" ); + + Assert.assertEquals( 3, consumer.getLines().size() ); + BlameLine blameLine = (BlameLine) consumer.getLines().get( 0 ); + Assert.assertNotNull(blameLine); + Assert.assertEquals( "0000000000000000000000000000000000000000", blameLine.getRevision() ); + Assert.assertEquals("Not Committed Yet", blameLine.getAuthor()); + + } + + /** + * Consume all lines in the given file with a fresh {@link GitBlameConsumer}. + * + * @param fileName + * @return the resulting {@link GitBlameConsumer} + * @throws IOException + */ + private GitBlameConsumer consumeFile( String fileName ) throws IOException + { GitBlameConsumer consumer = new GitBlameConsumer( new DefaultLog() ); - File f = getTestFile( "/src/test/resources/git/blame/git-blame.out" ); + File f = getTestFile( fileName ); BufferedReader r = new BufferedReader( new FileReader( f ) ); @@ -27,16 +96,6 @@ public class GitBlameConsumerTest { consumer.consumeLine( line ); } - - Assert.assertEquals( 73, consumer.getLines().size() ); - - BlameLine blameLine1 = (BlameLine) consumer.getLines().get( 11 ); - Assert.assertEquals( "96cfe5d4", blameLine1.getRevision() ); - Assert.assertEquals( "Tiago Bello Torres", blameLine1.getAuthor() ); - - BlameLine blameLine2 = (BlameLine) consumer.getLines().get( 35 ); - Assert.assertEquals( "8748a722", blameLine2.getRevision() ); - Assert.assertEquals( "Tiago Bello Torres", blameLine2.getAuthor() ); - + return consumer; } } Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-3.out URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-3.out?rev=1069986&view=auto ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-3.out (added) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-3.out Fri Feb 11 23:39:29 2011 @@ -0,0 +1,83 @@ +e670863b2b03e158c59f34af1fee20f91b2bd852 1 1 36 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1195766163 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1195766163 +committer-tz +0100 +summary initial version +boundary +filename pom.xml + <?xml version="1.0" encoding="UTF-8"?><!-- +e670863b2b03e158c59f34af1fee20f91b2bd852 2 2 + ~ Licensed to the Apache Software Foundation (ASF) under one +e670863b2b03e158c59f34af1fee20f91b2bd852 3 3 + ~ or more contributor license agreements. See the NOTICE file +e670863b2b03e158c59f34af1fee20f91b2bd852 4 4 + ~ distributed with this work for additional information +e670863b2b03e158c59f34af1fee20f91b2bd852 5 5 + ~ regarding copyright ownership. The ASF licenses this file +e670863b2b03e158c59f34af1fee20f91b2bd852 6 6 + ~ to you under the Apache License, Version 2.0 (the +e670863b2b03e158c59f34af1fee20f91b2bd852 7 7 + ~ "License"); you may not use this file except in compliance +e670863b2b03e158c59f34af1fee20f91b2bd852 8 8 + ~ with the License. You may obtain a copy of the License at +e670863b2b03e158c59f34af1fee20f91b2bd852 9 9 + ~ +e670863b2b03e158c59f34af1fee20f91b2bd852 10 10 + ~ http://www.apache.org/licenses/LICENSE-2.0 +e670863b2b03e158c59f34af1fee20f91b2bd852 11 11 + ~ +e670863b2b03e158c59f34af1fee20f91b2bd852 12 12 + ~ Unless required by applicable law or agreed to in writing, +e670863b2b03e158c59f34af1fee20f91b2bd852 13 13 + ~ software distributed under the License is distributed on an +e670863b2b03e158c59f34af1fee20f91b2bd852 14 14 + ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +e670863b2b03e158c59f34af1fee20f91b2bd852 15 15 + ~ KIND, either express or implied. See the License for the +e670863b2b03e158c59f34af1fee20f91b2bd852 16 16 + ~ specific language governing permissions and limitations +e670863b2b03e158c59f34af1fee20f91b2bd852 17 17 + ~ under the License. +e670863b2b03e158c59f34af1fee20f91b2bd852 18 18 + --> +e670863b2b03e158c59f34af1fee20f91b2bd852 19 19 + +e670863b2b03e158c59f34af1fee20f91b2bd852 20 20 + <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +e670863b2b03e158c59f34af1fee20f91b2bd852 21 21 + <parent> +e670863b2b03e158c59f34af1fee20f91b2bd852 22 22 + <artifactId>maven-scm-providers</artifactId> +e670863b2b03e158c59f34af1fee20f91b2bd852 23 23 + <groupId>org.apache.maven.scm</groupId> +e670863b2b03e158c59f34af1fee20f91b2bd852 24 24 + <version>1.0</version> +e670863b2b03e158c59f34af1fee20f91b2bd852 25 25 + </parent> +e670863b2b03e158c59f34af1fee20f91b2bd852 26 26 + <modelVersion>4.0.0</modelVersion> +e670863b2b03e158c59f34af1fee20f91b2bd852 27 27 + <artifactId>maven-scm-providers-git</artifactId> +e670863b2b03e158c59f34af1fee20f91b2bd852 28 28 + <packaging>pom</packaging> +e670863b2b03e158c59f34af1fee20f91b2bd852 29 29 + <name>Maven SCM git Provider - Parent</name> +e670863b2b03e158c59f34af1fee20f91b2bd852 30 30 + <version>1.1-SNAPSHOT</version> +e670863b2b03e158c59f34af1fee20f91b2bd852 31 31 + <modules> +e670863b2b03e158c59f34af1fee20f91b2bd852 32 32 + <module>maven-scm-provider-git-commons</module> +e670863b2b03e158c59f34af1fee20f91b2bd852 33 33 + <module>maven-scm-provider-gitexe</module> +e670863b2b03e158c59f34af1fee20f91b2bd852 34 34 + <module>maven-scm-provider-gittest</module> +e670863b2b03e158c59f34af1fee20f91b2bd852 35 35 + </modules> +e670863b2b03e158c59f34af1fee20f91b2bd852 36 36 + </project> Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-empty.out URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-empty.out?rev=1069986&view=auto ============================================================================== (empty) Added: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-new-file.out URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-new-file.out?rev=1069986&view=auto ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-new-file.out (added) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame-new-file.out Fri Feb 11 23:39:29 2011 @@ -0,0 +1,16 @@ +0000000000000000000000000000000000000000 1 1 3 +author Not Committed Yet +author-mail <not.committed.yet> +author-time 1297466272 +author-tz +0100 +committer Not Committed Yet +committer-mail <not.committed.yet> +committer-time 1297466272 +committer-tz +0100 +summary Version of newfile from newfile +filename newfile + new file +0000000000000000000000000000000000000000 2 2 + which is not yet checked in +0000000000000000000000000000000000000000 3 3 + containing 3 lines of text Modified: maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out?rev=1069986&r1=1069985&r2=1069986&view=diff ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out (original) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out Fri Feb 11 23:39:29 2011 @@ -1,73 +1,451 @@ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 1)/* -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 2) * Copyright (c) 1999-2009 Touch Tecnologia e Informatica Ltda. -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 3) * Gomes de Carvalho, 1666, 3o. Andar, Vila Olimpia, Sao Paulo, SP, Brasil. -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 4) * Todos os direitos reservados. -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 5) * -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 6) * Este software e confidencial e de propriedade da Touch Tecnologia e -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 7) * Informatica Ltda. (Informacao Confidencial). As informacoes contidas neste -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 8) * arquivo nao podem ser publicadas, e seu uso esta limitado de acordo com os -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 9) * termos do contrato de licenca. -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 10) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 11) -96cfe5d4 (Tiago Bello Torres 2010-06-24 14:21:29 -0300 12)package br.com.touchtec.veris.service; -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 13) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 14)import br.com.touchtec.exception.TouchException; -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 15)import br.com.touchtec.message.Message; -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 16) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 17)/** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 18) * -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 19) * -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 20) * @author jorge -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 21) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 22) * -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 23) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 24)public class VerisUserAuthenticationException extends TouchException { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 25) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 26) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 27) * -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 28) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 29) private static final long serialVersionUID = 1L; -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 30) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 31) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 32) * @param message -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 33) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 34) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 35) public VerisUserAuthenticationException(String message) { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 36) super(message); -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 37) } -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 38) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 39) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 40) * @param cause -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 41) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 42) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 43) public VerisUserAuthenticationException(Throwable cause) { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 44) super(cause); -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 45) } -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 46) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 47) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 48) * @param msg -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 49) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 50) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 51) public VerisUserAuthenticationException(Message msg) { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 52) super(msg); -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 53) } -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 54) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 55) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 56) * @param message -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 57) * @param cause -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 58) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 59) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 60) public VerisUserAuthenticationException(String message, Throwable cause) { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 61) super(message, cause); -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 62) } -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 63) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 64) /** -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 65) * @param msg -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 66) * @param cause -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 67) * @since -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 68) */ -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 69) public VerisUserAuthenticationException(Message msg, Throwable cause) { -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 70) super(msg, cause); -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 71) } -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 72) -8748a722 (Tiago Bello Torres 2010-06-03 17:59:00 -0300 73)} +e670863b2b03e158c59f34af1fee20f91b2bd852 1 1 21 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1195766163 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1195766163 +committer-tz +0100 +summary initial version +boundary +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + package org.apache.maven.scm.provider.git.gitexe.command.checkout; +e670863b2b03e158c59f34af1fee20f91b2bd852 2 2 + +e670863b2b03e158c59f34af1fee20f91b2bd852 3 3 + /* +e670863b2b03e158c59f34af1fee20f91b2bd852 4 4 + * Licensed to the Apache Software Foundation (ASF) under one +e670863b2b03e158c59f34af1fee20f91b2bd852 5 5 + * or more contributor license agreements. See the NOTICE file +e670863b2b03e158c59f34af1fee20f91b2bd852 6 6 + * distributed with this work for additional information +e670863b2b03e158c59f34af1fee20f91b2bd852 7 7 + * regarding copyright ownership. The ASF licenses this file +e670863b2b03e158c59f34af1fee20f91b2bd852 8 8 + * to you under the Apache License, Version 2.0 (the +e670863b2b03e158c59f34af1fee20f91b2bd852 9 9 + * "License"); you may not use this file except in compliance +e670863b2b03e158c59f34af1fee20f91b2bd852 10 10 + * with the License. You may obtain a copy of the License at +e670863b2b03e158c59f34af1fee20f91b2bd852 11 11 + * +e670863b2b03e158c59f34af1fee20f91b2bd852 12 12 + * http://www.apache.org/licenses/LICENSE-2.0 +e670863b2b03e158c59f34af1fee20f91b2bd852 13 13 + * +e670863b2b03e158c59f34af1fee20f91b2bd852 14 14 + * Unless required by applicable law or agreed to in writing, +e670863b2b03e158c59f34af1fee20f91b2bd852 15 15 + * software distributed under the License is distributed on an +e670863b2b03e158c59f34af1fee20f91b2bd852 16 16 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +e670863b2b03e158c59f34af1fee20f91b2bd852 17 17 + * KIND, either express or implied. See the License for the +e670863b2b03e158c59f34af1fee20f91b2bd852 18 18 + * specific language governing permissions and limitations +e670863b2b03e158c59f34af1fee20f91b2bd852 19 19 + * under the License. +e670863b2b03e158c59f34af1fee20f91b2bd852 20 20 + */ +e670863b2b03e158c59f34af1fee20f91b2bd852 21 21 + +e670863b2b03e158c59f34af1fee20f91b2bd852 23 22 2 + import org.apache.maven.scm.ScmException; +e670863b2b03e158c59f34af1fee20f91b2bd852 24 23 + import org.apache.maven.scm.ScmFileSet; +ee00bb6815bf9d5844073309534c652c591ae313 24 24 1 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1196968572 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1196968572 +committer-tz +0100 +summary git-branch added and improved branch/tag handling +previous a4984b7e83eecf5774bde8b2625d44ec72679793 maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + import org.apache.maven.scm.ScmFileStatus; +ed6a2c5cab54dda610c09c31c242dc7579260422 25 25 1 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1196973164 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1196973164 +committer-tz +0100 +summary fixed broken tag command +previous ee00bb6815bf9d5844073309534c652c591ae313 maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + import org.apache.maven.scm.ScmTag; +e670863b2b03e158c59f34af1fee20f91b2bd852 27 26 4 + import org.apache.maven.scm.ScmVersion; +e670863b2b03e158c59f34af1fee20f91b2bd852 28 27 + import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand; +e670863b2b03e158c59f34af1fee20f91b2bd852 29 28 + import org.apache.maven.scm.command.checkout.CheckOutScmResult; +e670863b2b03e158c59f34af1fee20f91b2bd852 30 29 + import org.apache.maven.scm.provider.ScmProviderRepository; +e670863b2b03e158c59f34af1fee20f91b2bd852 32 30 3 + import org.apache.maven.scm.provider.git.command.GitCommand; +e670863b2b03e158c59f34af1fee20f91b2bd852 33 31 + import org.apache.maven.scm.provider.git.repository.GitScmProviderRepository; +e670863b2b03e158c59f34af1fee20f91b2bd852 34 32 + import org.apache.maven.scm.provider.git.gitexe.command.GitCommandLineUtils; +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 32 33 2 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1196410907 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1196410907 +committer-tz +0100 +summary first draft of tag command for git +previous 51a69707a2d55f311d010fbede9db4d0de61ac15 maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + import org.apache.maven.scm.provider.git.gitexe.command.list.GitListCommand; +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 33 34 + import org.apache.maven.scm.provider.git.gitexe.command.list.GitListConsumer; +e670863b2b03e158c59f34af1fee20f91b2bd852 35 35 1 + import org.codehaus.plexus.util.StringUtils; +e670863b2b03e158c59f34af1fee20f91b2bd852 37 36 6 + import org.codehaus.plexus.util.cli.CommandLineUtils; +e670863b2b03e158c59f34af1fee20f91b2bd852 38 37 + import org.codehaus.plexus.util.cli.Commandline; +e670863b2b03e158c59f34af1fee20f91b2bd852 39 38 + +e670863b2b03e158c59f34af1fee20f91b2bd852 40 39 + import java.io.File; +e670863b2b03e158c59f34af1fee20f91b2bd852 41 40 + +e670863b2b03e158c59f34af1fee20f91b2bd852 42 41 + /** +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 41 42 1 + * @author <a href="mailto:strub...@yahoo.de">Mark Struberg</a> +e670863b2b03e158c59f34af1fee20f91b2bd852 45 43 1 + */ +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 43 44 1 + public class GitCheckOutCommand extends AbstractCheckOutCommand implements GitCommand +e670863b2b03e158c59f34af1fee20f91b2bd852 49 45 1 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 47 46 5 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1195869083 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1195869083 +committer-tz +0100 +summary tck continued until still missing 'checkin' +previous e670863b2b03e158c59f34af1fee20f91b2bd852 maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + /** +7c14cf0301dbb6d1379c1801a703b2641c22f348 48 47 + * For git, the given repository is a remote one. +7c14cf0301dbb6d1379c1801a703b2641c22f348 49 48 + * We have to clone it first if the working directory does not contain a git repo yet, +7c14cf0301dbb6d1379c1801a703b2641c22f348 50 49 + * otherwise we have to git-pull it. +7c14cf0301dbb6d1379c1801a703b2641c22f348 51 50 + * +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 50 51 1 + * TODO We currently assume a '.git' directory, so this does not work for --bare repos +7c14cf0301dbb6d1379c1801a703b2641c22f348 53 52 1 + */ +e670863b2b03e158c59f34af1fee20f91b2bd852 50 53 6 + protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet, +e670863b2b03e158c59f34af1fee20f91b2bd852 51 54 + ScmVersion version ) +e670863b2b03e158c59f34af1fee20f91b2bd852 52 55 + throws ScmException +e670863b2b03e158c59f34af1fee20f91b2bd852 53 56 + { +e670863b2b03e158c59f34af1fee20f91b2bd852 54 57 + GitScmProviderRepository repository = (GitScmProviderRepository) repo; +e670863b2b03e158c59f34af1fee20f91b2bd852 55 58 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 60 59 5 + if ( GitScmProviderRepository.PROTOCOL_FILE.equals( repository.getProtocol() ) && +7c14cf0301dbb6d1379c1801a703b2641c22f348 61 60 + repository.getUrl().indexOf( fileSet.getBasedir().getPath() ) >= 0 ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 62 61 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 63 62 + throw new ScmException( "remote repository must not be the working directory" ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 64 63 + } +e670863b2b03e158c59f34af1fee20f91b2bd852 57 64 1 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 66 65 3 + int exitCode; +7c14cf0301dbb6d1379c1801a703b2641c22f348 67 66 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 68 67 + CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer(); +e670863b2b03e158c59f34af1fee20f91b2bd852 60 68 1 + CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer(); +7c14cf0301dbb6d1379c1801a703b2641c22f348 71 69 1 + +ee00bb6815bf9d5844073309534c652c591ae313 71 70 3 + +ee00bb6815bf9d5844073309534c652c591ae313 72 71 + if ( !fileSet.getBasedir().exists() || +ee00bb6815bf9d5844073309534c652c591ae313 73 72 + !( new File( fileSet.getBasedir(), ".git" ).exists() ) ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 89 73 8 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 90 74 + if ( fileSet.getBasedir().exists() ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 91 75 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 92 76 + // git refuses to clone otherwise +7c14cf0301dbb6d1379c1801a703b2641c22f348 93 77 + fileSet.getBasedir().delete(); +7c14cf0301dbb6d1379c1801a703b2641c22f348 94 78 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 95 79 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 96 80 + // no git repo seems to exist, let's clone the original repo +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 92 81 1 + Commandline clClone = createCloneCommand( repository, fileSet.getBasedir() ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 98 82 1 + +52733aa427041cafd760833cb068ffe897fd35db 96 83 2 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1196168736 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1196168736 +committer-tz +0100 +summary fixed a GitCommandLineUtil and provice first version of the checkin command. +previous cef708a0aa71cc72f12eb6755513294f720ad858 maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + exitCode = GitCommandLineUtils.execute( clClone, stdout, stderr, getLogger() ); +52733aa427041cafd760833cb068ffe897fd35db 97 84 + if ( exitCode != 0 ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 104 85 1 + { +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 97 86 1 + return new CheckOutScmResult( clClone.toString(), "The git-clone command failed.", stderr.getOutput(), false ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 106 87 2 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 107 88 + } +ee00bb6815bf9d5844073309534c652c591ae313 90 89 13 + +ee00bb6815bf9d5844073309534c652c591ae313 91 90 + if ( fileSet.getBasedir().exists() && +ee00bb6815bf9d5844073309534c652c591ae313 92 91 + new File( fileSet.getBasedir(), ".git" ).exists() ) +ee00bb6815bf9d5844073309534c652c591ae313 93 92 + { +ee00bb6815bf9d5844073309534c652c591ae313 94 93 + // git repo exists, so we must git-pull the changes +ee00bb6815bf9d5844073309534c652c591ae313 95 94 + Commandline clPull = createPullCommand( repository, fileSet.getBasedir(), version ); +ee00bb6815bf9d5844073309534c652c591ae313 96 95 + +ee00bb6815bf9d5844073309534c652c591ae313 97 96 + exitCode = GitCommandLineUtils.execute( clPull, stdout, stderr, getLogger() ); +ee00bb6815bf9d5844073309534c652c591ae313 98 97 + if ( exitCode != 0 ) +ee00bb6815bf9d5844073309534c652c591ae313 99 98 + { +ee00bb6815bf9d5844073309534c652c591ae313 100 99 + return new CheckOutScmResult( clPull.toString(), "The git-pull command failed.", stderr.getOutput(), false ); +ee00bb6815bf9d5844073309534c652c591ae313 101 100 + } +ee00bb6815bf9d5844073309534c652c591ae313 102 101 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 108 102 3 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 109 103 + // and now lets do the git-checkout itself +7c14cf0301dbb6d1379c1801a703b2641c22f348 110 104 + Commandline cl = createCommandLine( repository, fileSet.getBasedir(), version ); +e670863b2b03e158c59f34af1fee20f91b2bd852 61 105 1 + +52733aa427041cafd760833cb068ffe897fd35db 108 106 1 + exitCode = GitCommandLineUtils.execute( cl, stdout, stderr, getLogger() ); +e670863b2b03e158c59f34af1fee20f91b2bd852 76 107 2 + if ( exitCode != 0 ) +e670863b2b03e158c59f34af1fee20f91b2bd852 77 108 + { +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 107 109 1 + return new CheckOutScmResult( cl.toString(), "The git-checkout command failed.", stderr.getOutput(), false ); +e670863b2b03e158c59f34af1fee20f91b2bd852 79 110 2 + } +e670863b2b03e158c59f34af1fee20f91b2bd852 80 111 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 131 112 1 + // and now search for the files +ee00bb6815bf9d5844073309534c652c591ae313 114 113 3 + GitListConsumer listConsumer = new GitListConsumer( getLogger() +ee00bb6815bf9d5844073309534c652c591ae313 115 114 + , fileSet.getBasedir() +ee00bb6815bf9d5844073309534c652c591ae313 116 115 + , ScmFileStatus.CHECKED_IN); +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 112 116 2 + +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 113 117 + Commandline clList = GitListCommand.createCommandLine( repository, fileSet.getBasedir() ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 133 118 1 + +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 115 119 1 + exitCode = GitCommandLineUtils.execute( clList, listConsumer, stderr, getLogger() ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 143 120 2 + if ( exitCode != 0 ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 144 121 + { +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 118 122 1 + return new CheckOutScmResult( clList.toString(), "The git-ls-files command failed.", stderr.getOutput(), false ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 146 123 2 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 147 124 + +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 121 125 1 + return new CheckOutScmResult( cl.toString(), listConsumer.getListedFiles() ); +e670863b2b03e158c59f34af1fee20f91b2bd852 82 126 11 + } +e670863b2b03e158c59f34af1fee20f91b2bd852 83 127 + +e670863b2b03e158c59f34af1fee20f91b2bd852 84 128 + // ---------------------------------------------------------------------- +e670863b2b03e158c59f34af1fee20f91b2bd852 85 129 + // +e670863b2b03e158c59f34af1fee20f91b2bd852 86 130 + // ---------------------------------------------------------------------- +e670863b2b03e158c59f34af1fee20f91b2bd852 87 131 + +e670863b2b03e158c59f34af1fee20f91b2bd852 88 132 + public static Commandline createCommandLine( GitScmProviderRepository repository, File workingDirectory, +e670863b2b03e158c59f34af1fee20f91b2bd852 89 133 + ScmVersion version ) +e670863b2b03e158c59f34af1fee20f91b2bd852 90 134 + { +e670863b2b03e158c59f34af1fee20f91b2bd852 91 135 + Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory, "checkout" ); +e670863b2b03e158c59f34af1fee20f91b2bd852 92 136 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 160 137 1 + +e670863b2b03e158c59f34af1fee20f91b2bd852 93 138 2 + if ( version != null && StringUtils.isNotEmpty( version.getName() ) ) +e670863b2b03e158c59f34af1fee20f91b2bd852 94 139 + { +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 136 140 1 + cl.createArgument().setValue( version.getName() ); +e670863b2b03e158c59f34af1fee20f91b2bd852 99 141 4 + } +e670863b2b03e158c59f34af1fee20f91b2bd852 100 142 + +e670863b2b03e158c59f34af1fee20f91b2bd852 101 143 + return cl; +e670863b2b03e158c59f34af1fee20f91b2bd852 102 144 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 171 145 4 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 172 146 + /** +7c14cf0301dbb6d1379c1801a703b2641c22f348 173 147 + * create a git-clone repository command +7c14cf0301dbb6d1379c1801a703b2641c22f348 174 148 + */ +57fd77f4b848e4a2cafd0b1c3cb0ca535b3e9f4a 145 149 1 + private Commandline createCloneCommand( GitScmProviderRepository repository, File workingDirectory ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 177 150 5 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 178 151 + Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory.getParentFile(), "clone" ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 179 152 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 180 153 + cl.createArgument().setValue( repository.getUrl() ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 181 154 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 190 155 17 + cl.createArgument().setFile( workingDirectory ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 191 156 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 192 157 + return cl; +7c14cf0301dbb6d1379c1801a703b2641c22f348 193 158 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 194 159 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 195 160 + /** +7c14cf0301dbb6d1379c1801a703b2641c22f348 196 161 + * create a git-pull repository command +7c14cf0301dbb6d1379c1801a703b2641c22f348 197 162 + */ +7c14cf0301dbb6d1379c1801a703b2641c22f348 198 163 + private Commandline createPullCommand( GitScmProviderRepository repository, File workingDirectory, +7c14cf0301dbb6d1379c1801a703b2641c22f348 199 164 + ScmVersion version ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 200 165 + { +7c14cf0301dbb6d1379c1801a703b2641c22f348 201 166 + Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory, "pull" ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 202 167 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 203 168 + cl.createArgument().setValue( repository.getUrl() ); +7c14cf0301dbb6d1379c1801a703b2641c22f348 204 169 + +7c14cf0301dbb6d1379c1801a703b2641c22f348 205 170 + if ( version != null && StringUtils.isNotEmpty( version.getName() ) ) +7c14cf0301dbb6d1379c1801a703b2641c22f348 206 171 + { +ed6a2c5cab54dda610c09c31c242dc7579260422 172 172 9 + if ( version instanceof ScmTag ) +ed6a2c5cab54dda610c09c31c242dc7579260422 173 173 + { +ed6a2c5cab54dda610c09c31c242dc7579260422 174 174 + cl.createArgument().setValue( "tag" ); +ed6a2c5cab54dda610c09c31c242dc7579260422 175 175 + cl.createArgument().setValue( version.getName() ); +ed6a2c5cab54dda610c09c31c242dc7579260422 176 176 + } +ed6a2c5cab54dda610c09c31c242dc7579260422 177 177 + else +ed6a2c5cab54dda610c09c31c242dc7579260422 178 178 + { +ed6a2c5cab54dda610c09c31c242dc7579260422 179 179 + cl.createArgument().setValue( version.getName() + ":" + version.getName() ); +ed6a2c5cab54dda610c09c31c242dc7579260422 180 180 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 211 181 1 + } +96aa36b0dc9ce85fd8981bde54edaa3bbe2b4482 182 182 3 +author Mark Struberg +author-mail <strub...@yahoo.de> +author-time 1202341147 +author-tz +0100 +committer Mark Struberg +committer-mail <strub...@yahoo.de> +committer-time 1202341147 +committer-tz +0100 +summary fixed problems with git-1.5.4 +previous 976b745bf1faecd939187a254c49edee2a81569a maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java +filename maven-scm-provider-gitexe/src/main/java/org/apache/maven/scm/provider/git/gitexe/command/checkout/GitCheckOutCommand.java + else { +96aa36b0dc9ce85fd8981bde54edaa3bbe2b4482 183 183 + cl.createArgument().setValue( "master" ); +96aa36b0dc9ce85fd8981bde54edaa3bbe2b4482 184 184 + } +7c14cf0301dbb6d1379c1801a703b2641c22f348 212 185 2 + return cl; +7c14cf0301dbb6d1379c1801a703b2641c22f348 213 186 + } +e670863b2b03e158c59f34af1fee20f91b2bd852 103 187 1 + }