diff --git a/changelog/project.xml b/changelog/project.xml index 34ff5534..b79235bf 100644 --- a/changelog/project.xml +++ b/changelog/project.xml @@ -172,10 +172,10 @@ maven maven-model - 1.1-SNAPSHOT + 3.0.0-SNAPSHOT - + xerces xerces diff --git a/changelog/src/main/org/apache/maven/cvslib/CvsChangeLogGenerator.java b/changelog/src/main/org/apache/maven/cvslib/CvsChangeLogGenerator.java index 8d71a160..f9d93a7d 100644 --- a/changelog/src/main/org/apache/maven/cvslib/CvsChangeLogGenerator.java +++ b/changelog/src/main/org/apache/maven/cvslib/CvsChangeLogGenerator.java @@ -111,7 +111,7 @@ class CvsChangeLogGenerator extends AbstractChangeLogGenerator entries = super.getEntries(parser); } catch (Exception e){ - LOG.error(e); + LOG.error("Error processing command", e); } @@ -153,25 +153,22 @@ class CvsChangeLogGenerator extends AbstractChangeLogGenerator // use the local repository directory eg. '/home/cvspublic' connectionBuffer = tokens[POS_SCM_PATH]; } + else if (tokens[POS_SCM_SUBTYPE].equalsIgnoreCase("lserver")) + { + //create the cvsroot as the local socket cvsroot + connectionBuffer = + tokens[POS_SCM_USERHOST] + ":" + tokens[POS_SCM_PATH]; + } else { - if (tokens[POS_SCM_SUBTYPE].equalsIgnoreCase("lserver")) - { - //create the cvsroot as the local socket cvsroot - connectionBuffer = - tokens[POS_SCM_USERHOST] + ":" + tokens[POS_SCM_PATH]; - } - else - { - //create the cvsroot as the remote cvsroot - connectionBuffer = - ":" - + tokens[POS_SCM_SUBTYPE] - + ":" - + tokens[POS_SCM_USERHOST] - + ":" - + tokens[POS_SCM_PATH]; - } + //create the cvsroot as the remote cvsroot + connectionBuffer = + ":" + + tokens[POS_SCM_SUBTYPE] + + ":" + + tokens[POS_SCM_USERHOST] + + ":" + + tokens[POS_SCM_PATH]; } command.createArgument().setValue(connectionBuffer.toString()); diff --git a/changelog/src/main/org/apache/maven/util/RepositoryUtils.java b/changelog/src/main/org/apache/maven/util/RepositoryUtils.java index 36c86ed6..43cea94b 100755 --- a/changelog/src/main/org/apache/maven/util/RepositoryUtils.java +++ b/changelog/src/main/org/apache/maven/util/RepositoryUtils.java @@ -26,7 +26,7 @@ import java.util.List; * * @author Jason van Zyl * - * @version $Id: RepositoryUtils.java,v 1.1 2004/09/24 10:47:03 brett Exp $ + * @version $Id$ */ public final class RepositoryUtils { @@ -61,6 +61,31 @@ public final class RepositoryUtils // for a valid repository, it should be scm: at least if (tokens.length >= 1 && tokens[1].equals("cvs")) { + if (tokens.length >= 2 && tokens[2].equals("local")) + { + if (tokens.length == 6) + { + if (tokens[3].length() > 0 && !tokens[3].equals("local")) + { + throw new IllegalArgumentException("cvs local repository connection string must specify 5 tokens, or an empty 3rd token if 6"); + } + } + else if (tokens.length == 5) + { + String[] newTokens = new String[6]; + newTokens[0] = tokens[0]; + newTokens[1] = tokens[1]; + newTokens[2] = tokens[2]; + newTokens[3] = ""; + newTokens[4] = tokens[3]; + newTokens[5] = tokens[4]; + tokens = newTokens; + } + else + { + throw new IllegalArgumentException("cvs local repository connection string doesn't contain five tokens"); + } + } if (tokens.length != 6) { throw new IllegalArgumentException("cvs repository connection string doesn't contain six tokens"); diff --git a/changelog/src/test/org/apache/maven/util/RepositoryTest.java b/changelog/src/test/org/apache/maven/util/RepositoryTest.java index 6fdfc544..232acda7 100644 --- a/changelog/src/test/org/apache/maven/util/RepositoryTest.java +++ b/changelog/src/test/org/apache/maven/util/RepositoryTest.java @@ -22,13 +22,80 @@ import junit.framework.TestCase; public class RepositoryTest extends TestCase { - public void testSplitScmConnection() + public void testSplitScmConnectionCvsPserver() { String con = "scm:cvs:pserver:anoncvs@cvs.apache.org:/home/cvspublic:module"; String[] tokens = RepositoryUtils.splitSCMConnection(con); assertEquals("Wrong number of tokens split", 6, tokens.length); - con = "scm|svn|http://svn.apache.org/repos"; - tokens = RepositoryUtils.splitSCMConnection(con); + } + + public void testSplitScmConnectionCvsLocal5Tokens() + { + String con = "scm:cvs:local:/cvs/root:module"; + String[] tokens = RepositoryUtils.splitSCMConnection(con); + assertEquals("Wrong number of tokens split", 6, tokens.length); + } + + public void testSplitScmConnectionCvsLocal6Tokens3rdEmpty() + { + String con = "scm:cvs:local::/cvs/root:module"; + String[] tokens = RepositoryUtils.splitSCMConnection(con); + assertEquals("Wrong number of tokens split", 6, tokens.length); + } + + public void testSplitScmConnectionCvsLocal6Tokens3rdLocal() + { + String con = "scm:cvs:local:local:/cvs/root:module"; + String[] tokens = RepositoryUtils.splitSCMConnection(con); + assertEquals("Wrong number of tokens split", 6, tokens.length); + } + + public void testSplitScmConnectionCvsLocal4Tokens() + { + String con = "scm:cvs:local:/cvs/root"; + try + { + String[] tokens = RepositoryUtils.splitSCMConnection(con); + fail("Should throw an exception splitting " + con); + } + catch ( IllegalArgumentException expected ) + { + assertTrue( true ); + } + } + + public void testSplitScmConnectionCvsPserver5Tokens() + { + String con = "scm:cvs:pserver:user@host:/cvs/root"; + try + { + String[] tokens = RepositoryUtils.splitSCMConnection(con); + fail("Should throw an exception splitting " + con); + } + catch ( IllegalArgumentException expected ) + { + assertTrue( true ); + } + } + + public void testSplitScmConnectionCvsLocal6TokensNonEmpty3rd() + { + String con = "scm:cvs:local:foo:/cvs/root:module"; + try + { + String[] tokens = RepositoryUtils.splitSCMConnection(con); + fail("Should throw an exception splitting " + con); + } + catch ( IllegalArgumentException expected ) + { + assertTrue( true ); + } + } + + public void testSplitScmConnectionSvn() + { + String con = "scm|svn|http://svn.apache.org/repos"; + String[] tokens = RepositoryUtils.splitSCMConnection(con); assertEquals("Wrong number of tokens split", 3, tokens.length); } } diff --git a/changelog/xdocs/changes.xml b/changelog/xdocs/changes.xml index 59d2829a..34740c45 100644 --- a/changelog/xdocs/changes.xml +++ b/changelog/xdocs/changes.xml @@ -26,6 +26,7 @@ + Allow local CVSROOT to only have 5 tokens (no host name) Fix subversion revision passing on Windows