Author: olamy Date: Tue Dec 28 20:13:15 2010 New Revision: 1053421 URL: http://svn.apache.org/viewvc?rev=1053421&view=rev Log: [SCM-592] Error parsing blame for git Submitted by Evgeny Mandrikov.
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/blame/GitBlameConsumerTest.java (with props) maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/ 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 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 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=1053421&r1=1053420&r2=1053421&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 Tue Dec 28 20:13:15 2010 @@ -62,6 +62,7 @@ public class GitBlameCommand { Commandline cl = GitCommandLineUtils.getBaseGitCommandLine( workingDirectory, "blame" ); cl.createArg().setValue( "-c" ); + cl.createArg().setValue( "-l" ); 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=1053421&r1=1053420&r2=1053421&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 Tue Dec 28 20:13:15 2010 @@ -22,7 +22,6 @@ package org.apache.maven.scm.provider.gi import org.apache.maven.scm.command.blame.BlameLine; import org.apache.maven.scm.log.ScmLogger; import org.apache.maven.scm.util.AbstractConsumer; -import org.apache.regexp.RE; import java.util.ArrayList; import java.util.Date; @@ -37,37 +36,26 @@ public class GitBlameConsumer { private static final String GIT_TIMESTAMP_PATTERN = "yyyy-MM-dd HH:mm:ss Z"; - private static final String LINE_PATTERN = "(.*)\t\\((.*)\t(.*)\t.*\\)"; - - /** - * @see #LINE_PATTERN - */ - private RE lineRegexp; - private List lines = new ArrayList(); public GitBlameConsumer( ScmLogger logger ) { super( logger ); - - lineRegexp = new RE( LINE_PATTERN ); } public void consumeLine( String line ) { - if ( lineRegexp.match( line ) ) + String parts[] = line.split( "\t", 4 ); + String revision = parts[0]; + String author = parts[1].substring( 1 ); + String dateTimeStr = parts[2]; + + Date dateTime = parseDate( dateTimeStr, null, GIT_TIMESTAMP_PATTERN ); + getLines().add( new BlameLine( dateTime, revision, author ) ); + + if ( getLogger().isDebugEnabled() ) { - String revision = lineRegexp.getParen( 1 ); - String author = lineRegexp.getParen( 2 ); - String dateTimeStr = lineRegexp.getParen( 3 ); - - Date dateTime = parseDate( dateTimeStr, null, GIT_TIMESTAMP_PATTERN ); - getLines().add( new BlameLine( dateTime, revision, author ) ); - - if ( getLogger().isDebugEnabled() ) - { - getLogger().debug( author + " " + dateTimeStr ); - } + getLogger().debug( author + " " + dateTimeStr ); } } 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/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=1053421&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/blame/GitBlameConsumerTest.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/blame/GitBlameConsumerTest.java Tue Dec 28 20:13:15 2010 @@ -0,0 +1,42 @@ +package org.apache.maven.scm.provider.git.gitexe.command.blame; + +import junit.framework.Assert; +import org.apache.maven.scm.command.blame.BlameLine; +import org.apache.maven.scm.log.DefaultLog; +import org.codehaus.plexus.PlexusTestCase; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +public class GitBlameConsumerTest + extends PlexusTestCase +{ + public void testConsumer() + throws Exception + { + GitBlameConsumer consumer = new GitBlameConsumer( new DefaultLog() ); + + File f = getTestFile( "/src/test/resources/git/blame/git-blame.out" ); + + BufferedReader r = new BufferedReader( new FileReader( f ) ); + + String line; + + while ( ( line = r.readLine() ) != null ) + { + 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() ); + + } +} 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/blame/GitBlameConsumerTest.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/blame/GitBlameConsumerTest.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/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=1053421&view=auto ============================================================================== --- maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out (added) +++ maven/scm/trunk/maven-scm-providers/maven-scm-providers-git/maven-scm-provider-gitexe/src/test/resources/git/blame/git-blame.out Tue Dec 28 20:13:15 2010 @@ -0,0 +1,73 @@ +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)}