diff --git a/maven-scm-api/pom.xml b/maven-scm-api/pom.xml
index 9095d49..4bbadf9 100644
--- a/maven-scm-api/pom.xml
+++ b/maven-scm-api/pom.xml
@@ -2,12 +2,12 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-api</artifactId>
   <name>Maven SCM API</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
diff --git a/maven-scm-client/pom.xml b/maven-scm-client/pom.xml
index 5dd575b..a9ec33e 100644
--- a/maven-scm-client/pom.xml
+++ b/maven-scm-client/pom.xml
@@ -2,47 +2,47 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-client</artifactId>
   <name>Maven SCM Client</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-perforce</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-manager-plexus</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-local</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-clearcase</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-starteam</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-cvs</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svn</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/maven-scm-managers/maven-scm-manager-plexus/pom.xml b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
index 10822da..2852663 100644
--- a/maven-scm-managers/maven-scm-manager-plexus/pom.xml
+++ b/maven-scm-managers/maven-scm-manager-plexus/pom.xml
@@ -2,12 +2,12 @@
   <parent>
     <artifactId>maven-scm-managers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-manager-plexus</artifactId>
   <name>Maven SCM Manager for Plexus</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>plexus</groupId>
diff --git a/maven-scm-managers/pom.xml b/maven-scm-managers/pom.xml
index d30e0c3..1a92971 100644
--- a/maven-scm-managers/pom.xml
+++ b/maven-scm-managers/pom.xml
@@ -2,13 +2,13 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-managers</artifactId>
   <packaging>pom</packaging>
   <name>Maven SCM Managers</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <modules>
     <module>maven-scm-manager-plexus</module>
   </modules>
@@ -16,7 +16,7 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-api</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/maven-scm-plugin/pom.xml b/maven-scm-plugin/pom.xml
index 6b99edd..efdbb41 100644
--- a/maven-scm-plugin/pom.xml
+++ b/maven-scm-plugin/pom.xml
@@ -2,14 +2,14 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-scm-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>Maven SCM Plugin</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -24,37 +24,37 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-perforce</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-manager-plexus</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-local</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-clearcase</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-starteam</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-cvs</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-svn</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
   </dependencies>
-</project>
+</project>
\ No newline at end of file
diff --git a/maven-scm-providers/maven-scm-provider-clearcase/pom.xml b/maven-scm-providers/maven-scm-provider-clearcase/pom.xml
index 773e45f..2839546 100644
--- a/maven-scm-providers/maven-scm-provider-clearcase/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-clearcase/pom.xml
@@ -2,10 +2,10 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-clearcase</artifactId>
   <name>Maven SCM Clearcase Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
 </project>
\ No newline at end of file
diff --git a/maven-scm-providers/maven-scm-provider-cvs/pom.xml b/maven-scm-providers/maven-scm-provider-cvs/pom.xml
index d60d2d7..80e9e41 100644
--- a/maven-scm-providers/maven-scm-provider-cvs/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-cvs/pom.xml
@@ -2,10 +2,10 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-cvs</artifactId>
   <name>Maven SCM CVS Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
 </project>
\ No newline at end of file
diff --git a/maven-scm-providers/maven-scm-provider-local/pom.xml b/maven-scm-providers/maven-scm-provider-local/pom.xml
index 801352d..e56d039 100644
--- a/maven-scm-providers/maven-scm-provider-local/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-local/pom.xml
@@ -2,10 +2,10 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-local</artifactId>
   <name>Maven SCM Local Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
 </project>
\ No newline at end of file
diff --git a/maven-scm-providers/maven-scm-provider-perforce/pom.xml b/maven-scm-providers/maven-scm-provider-perforce/pom.xml
index 4ec2486..5da321d 100644
--- a/maven-scm-providers/maven-scm-provider-perforce/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-perforce/pom.xml
@@ -2,12 +2,12 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-perforce</artifactId>
   <name>Maven SCM Perforce Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>regexp</groupId>
diff --git a/maven-scm-providers/maven-scm-provider-starteam/pom.xml b/maven-scm-providers/maven-scm-provider-starteam/pom.xml
index 0666ec4..05fb1d4 100644
--- a/maven-scm-providers/maven-scm-provider-starteam/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-starteam/pom.xml
@@ -2,10 +2,10 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-starteam</artifactId>
   <name>Maven SCM Starteam Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
 </project>
\ No newline at end of file
diff --git a/maven-scm-providers/maven-scm-provider-svn/pom.xml b/maven-scm-providers/maven-scm-provider-svn/pom.xml
index 423e9c2..1aabf43 100644
--- a/maven-scm-providers/maven-scm-provider-svn/pom.xml
+++ b/maven-scm-providers/maven-scm-provider-svn/pom.xml
@@ -2,12 +2,12 @@
   <parent>
     <artifactId>maven-scm-providers</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-provider-svn</artifactId>
   <name>Maven SCM Subversion Provider</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>regexp</groupId>
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java
index 9a53749..c6174b5 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommand.java
@@ -21,6 +21,7 @@
 import org.apache.maven.scm.command.changelog.AbstractChangeLogCommand;
 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
 import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
 import org.apache.maven.scm.provider.svn.command.SvnCommand;
 import org.apache.maven.scm.provider.svn.command.SvnCommandLineUtils;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
@@ -41,7 +42,7 @@
     extends AbstractChangeLogCommand
     implements SvnCommand
 {
-    private final static String DATE_FORMAT = "yyyy/MM/dd 'GMT'";
+    private final static String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss Z";
 
     protected ChangeLogScmResult executeChangeLogCommand( ScmProviderRepository repo, ScmFileSet fileSet,
                                                           Date startDate, Date endDate, int numDays, String branch )
@@ -92,6 +93,8 @@
         cl.createArgument().setValue( "log" );
 
         cl.createArgument().setValue( "-v" );
+        
+        // TODO: May want to add some kind of support for --stop-on-copy and --limit NUM
 
         if ( startDate != null )
         {
@@ -107,15 +110,14 @@
                 cl.createArgument().setValue( "{" + dateFormat.format( startDate ) + "}:HEAD" );
             }
         }
-        else
+        
+        if ( branch != null )
         {
-            if ( branch != null )
-            {
-                cl.createArgument().setValue( "-r" );
-                cl.createArgument().setValue( branch );
-            }
+            // By specifying a branch and this repository url below, subversion should show 
+            // the changelog of that branch, but limit it to paths that also occur in this repository.
+            cl.createArgument().setValue( SvnTagBranchUtils.resolveBranchUrl( repository, branch ) );
         }
-
+        
         cl.createArgument().setValue( repository.getUrl() );
 
         return cl;
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java
index 1464a9e..de4cff1 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/checkout/SvnCheckOutCommand.java
@@ -21,6 +21,7 @@
 import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
 import org.apache.maven.scm.provider.svn.command.SvnCommand;
 import org.apache.maven.scm.provider.svn.command.SvnCommandLineUtils;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
@@ -46,13 +47,7 @@
         String url = repository.getUrl();
         if ( tag != null )
         {
-            String tagBase = repository.getTagBase();
-
-            if ( tagBase == null )
-            {
-                throw new ScmException( "tag base must be specified" );
-            }
-            url = tagBase + "/" + tag;
+            url = SvnTagBranchUtils.resolveTagUrl( repository, tag );
         }
 
         // TODO: revision
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommand.java b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommand.java
index a015087..1323041 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommand.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommand.java
@@ -16,6 +16,12 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.ScmFileSet;
@@ -24,6 +30,7 @@
 import org.apache.maven.scm.command.tag.AbstractTagCommand;
 import org.apache.maven.scm.command.tag.TagScmResult;
 import org.apache.maven.scm.provider.ScmProviderRepository;
+import org.apache.maven.scm.provider.svn.SvnTagBranchUtils;
 import org.apache.maven.scm.provider.svn.command.SvnCommand;
 import org.apache.maven.scm.provider.svn.command.SvnCommandLineUtils;
 import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
@@ -32,12 +39,6 @@
 import org.codehaus.plexus.util.cli.CommandLineUtils;
 import org.codehaus.plexus.util.cli.Commandline;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
@@ -62,12 +63,6 @@
 
         SvnScmProviderRepository repository = (SvnScmProviderRepository) repo;
 
-        String tagBase = repository.getTagBase();
-        if ( tagBase == null )
-        {
-            throw new ScmException( "tag base must be specified" );
-        }
-
         File messageFile = FileUtils.createTempFile( "maven-scm-", ".commit", null );
 
         try
@@ -81,7 +76,7 @@
                                      null, false );
         }
 
-        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), tagBase, tag, messageFile );
+        Commandline cl = createCommandLine( repository, fileSet.getBasedir(), tag, messageFile );
 
         CommandLineUtils.StringStreamConsumer stdout = new CommandLineUtils.StringStreamConsumer();
 
@@ -132,7 +127,7 @@
     // ----------------------------------------------------------------------
 
     private static Commandline createCommandLine( SvnScmProviderRepository repository, File workingDirectory,
-                                                  String tagBase, String tag, File messageFile )
+                                                  String tag, File messageFile )
     {
         Commandline cl = SvnCommandLineUtils.getBaseSvnCommandLine( workingDirectory, repository );
 
@@ -145,7 +140,7 @@
         cl.createArgument().setValue( "." );
 
         // Note: this currently assumes you have the tag base checked out too
-        cl.createArgument().setValue( tagBase + "/" + tag );
+        cl.createArgument().setValue( SvnTagBranchUtils.resolveTagUrl( repository, tag ) );
 
         return cl;
     }
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
index 12e219e..bf9f7b7 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/main/java/org/apache/maven/scm/provider/svn/repository/SvnScmProviderRepository.java
@@ -29,7 +29,7 @@
     private String url;
 
     /**
-     * The base directory for any tags, relative to the URL given. Default is <code>../tags</code>.
+     * The base directory for any tags. Can be relative to the repository URL or an absolute URL. 
      */
     private String tagBase;
 
@@ -61,9 +61,10 @@
      * The TagBase is a way to override the default tag location for the 
      * repository.  The default tag location is automatically determined 
      * for repositories in the standard subversion layout (with /tags /branches /trunk). 
+     * Specify this value only if the repository is using a directory other than "/tags" for tagging.
      *
      * @param tagBase  an absolute or relative url to the base directory to create tags in. 
-     *                 Should not be in a format that svn client understands, not the scm url format.
+     *                 URL should be in a format that svn client understands, not the scm url format.
      */
     public void setTagBase( String tagBase )
     {
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java b/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java
index f789ecd..e8d7768 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/changelog/SvnChangeLogCommandTest.java
@@ -22,6 +22,7 @@
 import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
+import java.util.Calendar;
 import java.util.Date;
 
 /**
@@ -31,21 +32,99 @@
 public class SvnChangeLogCommandTest
     extends ScmTestCase
 {
-    public void testCommandLine()
+    public void testCommandLineNoDates()
         throws Exception
     {
-        Date startDate = getDate( 2003, 8, 10, GMT_TIME_ZONE );
-        Date endDate = getDate( 2003, 9, 10, GMT_TIME_ZONE );
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, null, null,
+                         "svn --non-interactive log -v http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineWithDates()
+        throws Exception
+    {
+        Date startDate = getDate( 2003, Calendar.SEPTEMBER, 10, GMT_TIME_ZONE );
+        Date endDate = getDate( 2003, Calendar.OCTOBER, 10, GMT_TIME_ZONE );
 
         testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, startDate, endDate,
-                         "svn --non-interactive log -v -r \"{2003/09/10 GMT}:{2003/10/10 GMT}\" http://foo.com/svn/trunk" );
+                         "svn --non-interactive log -v -r \"{2003-09-10 00:00:00 +0000}:{2003-10-10 00:00:00 +0000}\" http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineStartDateOnly()
+        throws Exception
+    {
+        Date startDate = getDate( 2003, Calendar.SEPTEMBER, 10, 1, 1, 1, GMT_TIME_ZONE );
+
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, startDate, null,
+                         "svn --non-interactive log -v -r \"{2003-09-10 01:01:01 +0000}:HEAD\" http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineDateFormat()
+        throws Exception
+    {
+        Date startDate = getDate( 2003, Calendar.SEPTEMBER, 10, 1, 1, 1, GMT_TIME_ZONE );
+        Date endDate = getDate( 2005, Calendar.NOVEMBER, 13, 23, 23, 23, GMT_TIME_ZONE );
+
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, startDate, endDate,
+                         "svn --non-interactive log -v -r \"{2003-09-10 01:01:01 +0000}:{2005-11-13 23:23:23 +0000}\" http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineEndDateOnly()
+        throws Exception
+    {
+        Date endDate = getDate( 2003, Calendar.NOVEMBER, 10, GMT_TIME_ZONE );
+
+        // Only specifying end date should print no dates at all
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", null, null, endDate,
+                         "svn --non-interactive log -v http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineWithBranchNoDates()
+        throws Exception
+    {
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", "my-test-branch", null, null,
+                         "svn --non-interactive log -v http://foo.com/svn/branches/my-test-branch http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineWithBranchStartDateOnly()
+        throws Exception
+    {
+        Date startDate = getDate( 2003, Calendar.SEPTEMBER, 10, 1, 1, 1, GMT_TIME_ZONE );
+
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk",
+                         "my-test-branch",
+                         startDate,
+                         null,
+                         "svn --non-interactive log -v -r \"{2003-09-10 01:01:01 +0000}:HEAD\" http://foo.com/svn/branches/my-test-branch http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineWithBranchEndDateOnly()
+        throws Exception
+    {
+        Date endDate = getDate( 2003, Calendar.OCTOBER, 10, 1, 1, 1, GMT_TIME_ZONE );
+
+        // Only specifying end date should print no dates at all
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk", "my-test-branch", null, endDate,
+                         "svn --non-interactive log -v http://foo.com/svn/branches/my-test-branch http://foo.com/svn/trunk" );
+    }
+
+    public void testCommandLineWithBranchBothDates()
+        throws Exception
+    {
+        Date startDate = getDate( 2003, Calendar.SEPTEMBER, 10, GMT_TIME_ZONE );
+        Date endDate = getDate( 2003, Calendar.OCTOBER, 10, GMT_TIME_ZONE );
+
+        testCommandLine( "scm:svn:http://foo.com/svn/trunk",
+                         "my-test-branch",
+                         startDate,
+                         endDate,
+                         "svn --non-interactive log -v -r \"{2003-09-10 00:00:00 +0000}:{2003-10-10 00:00:00 +0000}\" http://foo.com/svn/branches/my-test-branch http://foo.com/svn/trunk" );
     }
 
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
 
-    private void testCommandLine( String scmUrl, String tag, Date startDate, Date endDate, String commandLine )
+    private void testCommandLine( String scmUrl, String branch, Date startDate, Date endDate, String commandLine )
         throws Exception
     {
         File workingDirectory = getTestFile( "target/svn-update-command-test" );
@@ -54,7 +133,7 @@
 
         SvnScmProviderRepository svnRepository = (SvnScmProviderRepository) repository.getProviderRepository();
 
-        Commandline cl = SvnChangeLogCommand.createCommandLine( svnRepository, workingDirectory, tag, startDate,
+        Commandline cl = SvnChangeLogCommand.createCommandLine( svnRepository, workingDirectory, branch, startDate,
                                                                 endDate );
 
         assertEquals( commandLine, cl.toString() );
diff --git a/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommandTckTest.java b/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommandTckTest.java
index 205a5a9..edca257 100644
--- a/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommandTckTest.java
+++ b/maven-scm-providers/maven-scm-provider-svn/src/test/java/org/apache/maven/scm/provider/svn/command/tag/SvnTagCommandTckTest.java
@@ -16,14 +16,11 @@
  * limitations under the License.
  */
 
-import org.apache.maven.scm.manager.ScmManager;
-import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
-import org.apache.maven.scm.provider.svn.repository.SvnScmProviderRepository;
-import org.apache.maven.scm.repository.ScmRepository;
-import org.apache.maven.scm.tck.command.tag.TagCommandTckTest;
-
 import java.io.File;
 
+import org.apache.maven.scm.provider.svn.SvnScmTestUtils;
+import org.apache.maven.scm.tck.command.tag.TagCommandTckTest;
+
 /**
  * This test tests the tag command.
  *
@@ -37,16 +34,7 @@
     {
         return SvnScmTestUtils.getScmUrl( new File( getRepositoryRoot(), "trunk" ) );
     }
-
-    protected ScmRepository getScmRepository( ScmManager scmManager )
-        throws Exception
-    {
-        ScmRepository repo = super.getScmRepository( scmManager );
-        SvnScmProviderRepository repository = (SvnScmProviderRepository) repo.getProviderRepository();
-        repository.setTagBase( SvnScmTestUtils.getScmUrl( new File( getRepositoryRoot(), "tags" ) ).substring( "scm:svn:".length() ) );
-        return repo;
-    }
-
+    
     public void initRepo()
         throws Exception
     {
diff --git a/maven-scm-providers/pom.xml b/maven-scm-providers/pom.xml
index 33e0738..aeb7645 100644
--- a/maven-scm-providers/pom.xml
+++ b/maven-scm-providers/pom.xml
@@ -2,13 +2,13 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-providers</artifactId>
   <packaging>pom</packaging>
   <name>Maven SCM Providers</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <modules>
     <module>maven-scm-provider-clearcase</module>
     <module>maven-scm-provider-cvs</module>
@@ -21,12 +21,12 @@
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-api</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-test</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/maven-scm-test/pom.xml b/maven-scm-test/pom.xml
index 34e0a2b..c75952f 100644
--- a/maven-scm-test/pom.xml
+++ b/maven-scm-test/pom.xml
@@ -2,22 +2,22 @@
   <parent>
     <artifactId>maven-scm</artifactId>
     <groupId>org.apache.maven.scm</groupId>
-    <version>1.0-beta-1-SNAPSHOT</version>
+    <version>1.0-beta-1</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-scm-test</artifactId>
   <name>Maven SCM Test</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-api</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-manager-plexus</artifactId>
-      <version>1.0-beta-1-SNAPSHOT</version>
+      <version>1.0-beta-1</version>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
index b9e4734..173dc6f 100644
--- a/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
+++ b/maven-scm-test/src/main/java/org/apache/maven/scm/ScmTestCase.java
@@ -216,22 +216,25 @@
 
     public static Date getDate( int year, int month, int day )
     {
-        Calendar cal = Calendar.getInstance();
-
-        cal.set( year, month, day, 0, 0, 0 );
-        cal.set( Calendar.MILLISECOND, 0 );
-
-        return cal.getTime();
+        return getDate(year, month, day, 0, 0, 0, null);
     }
 
     protected static Date getDate( int year, int month, int day, TimeZone tz )
     {
+        return getDate(year, month, day, 0, 0, 0, tz);
+    }
+    
+    protected static Date getDate( int year, int month, int day, int hourOfDay, int minute, int second, TimeZone tz )
+    {
         Calendar cal = Calendar.getInstance();
-
-        cal.setTimeZone( tz );
-        cal.set( year, month, day, 0, 0, 0 );
+        
+        if ( tz != null )
+        {
+            cal.setTimeZone( tz );
+        }
+        cal.set( year, month, day, hourOfDay, minute, second );
         cal.set( Calendar.MILLISECOND, 0 );
-
+        
         return cal.getTime();
     }
 }
diff --git a/pom.xml b/pom.xml
index 73659d2..1ed3237 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
   <artifactId>maven-scm</artifactId>
   <packaging>pom</packaging>
   <name>Maven SCM</name>
-  <version>1.0-beta-1-SNAPSHOT</version>
+  <version>1.0-beta-1</version>
   <issueManagement>
     <system>jira</system>
     <url>http://jira.codehaus.org/browse/SCM</url>
-  </issueManagement>            
+  </issueManagement>
   <ciManagement>
     <notifiers>
       <notifier>
@@ -38,8 +38,8 @@
     </developer>
   </developers>
   <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/scm/trunk/</connection>
-    <developerConnection>scm:svn:http://svn.apache.org/repos/asf/maven/scm/trunk/</developerConnection>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/scm/tags/maven-scm-1.0-beta-1/</connection>
+    <developerConnection>scm:svn:http://svn.apache.org/repos/asf/maven/scm/tags/maven-scm-1.0-beta-1/</developerConnection>
     <url>http://svn.apache.org/viewcvs.cgi/maven/scm/</url>
   </scm>
   <organization>
@@ -110,4 +110,4 @@
       <url>scp://minotaur.apache.org/www/maven.apache.org/maven2/scm/</url>
     </site>
   </distributionManagement>
-</project>
+</project>
\ No newline at end of file
