You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2007/03/27 15:22:22 UTC

svn commit: r522898 - in /maven/scm/trunk/maven-scm-site/src/site: apt/guide/usage.apt site.xml

Author: evenisse
Date: Tue Mar 27 06:22:21 2007
New Revision: 522898

URL: http://svn.apache.org/viewvc?view=rev&rev=522898
Log:
[SCM-5] Add a little user/developer guide.

Added:
    maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt   (with props)
Modified:
    maven/scm/trunk/maven-scm-site/src/site/site.xml

Added: maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt?view=auto&rev=522898
==============================================================================
--- maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt (added)
+++ maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt Tue Mar 27 06:22:21 2007
@@ -0,0 +1,171 @@
+ ------
+ How to use Maven-SCM in your application
+ ------
+ Maven Team
+ ------
+ 26 March 2007
+ ------
+
+<<This document is a Draft.>>
+
+* Create a SCM Manager
+
+** With Plexus IOC
+
+    With {{{http://plexus.codehaus.org}Plexus}}, it's very easy to use Maven SCM because it injects all dependencies in fields, so you have only the minimal code to write.
+
++------------------------------------------+
+    public ScmManager getScmManager()
+    {
+        plexus = new Embedder();
+
+        plexus.start();
+
+        return (ScmManager) plexus.lookup( ScmManager.ROLE );
+    }
++------------------------------------------+
+
+
+** Without Plexus IOC
+
+    Without Plexus, you'll must add all your SCM providers in the manager and it will require more work. The first step is to create a new SCM manager class:
+
++------------------------------------------+
+    public class BasicScmManager
+        extends AbstractScmManager
+    {
+        protected ScmLogger getScmLogger()
+        {
+            return new DefaultLog();
+        }
+    }
++------------------------------------------+
+
+    Now, your SCM Manager class is created, you can initialize it:
+
++------------------------------------------+
+    public ScmManager getScmManager()
+    {
+        ScmManager manager = new BasicScmManager();
+
+        //Add all SCM providers we want to use
+        manager.addScmProvider( "cvs", new CvsJavaScmProvider() );
+        manager.addScmProvider( "svn", new SvnExeScmProvider() );
+        ...
+
+        return manager;
+    }
++------------------------------------------+
+
+* Run a SCM command
+
+    Before to call a command, the SCM manager need a ScmRepository. This object contains all informations about the SCM connection.
+
++------------------------------------------+
+    public ScmRepository getScmRepository( String scmUrl )
+        throw Exception
+    {
+        ScmRepository repository;
+
+        try
+        {
+            return getScmManager().makeScmRepository( scmUrl );
+        }
+        catch ( NoSuchScmProviderException ex )
+        {
+            System.err.println( "Could not find a provider." );
+
+            throw new Exception( "Could not find a provider." );
+        }
+        catch ( ScmRepositoryException ex )
+        {
+            System.err.println( "Error while connecting to the repository" );
+
+            throw new Exception( "Error while connecting to the repository" );
+        }
+    }
++------------------------------------------+
+
+** Checkout command
+
++------------------------------------------+
+    public void checkOut( ScmRepository scmRepository, File workingDirectory, String tag )
+        throws ScmException
+    {
+        if ( workingDirectory.exists() )
+        {
+            System.err.println( "The working directory already exist: '" + workingDirectory.getAbsolutePath() + "'." );
+
+            return;
+        }
+
+        if ( !workingDirectory.mkdirs() )
+        {
+            System.err.println(
+                "Error while making the working directory: '" + workingDirectory.getAbsolutePath() + "'." );
+
+            return;
+        }
+
+        CheckOutScmResult result = scmManager.getProviderByRepository( scmRepository )
+            .checkOut( scmRepository, new ScmFileSet( workingDirectory ), tag );
+
+        if ( !result.isSuccess() )
+        {
+            showError( result );
+
+            return;
+        }
+
+        List checkedOutFiles = result.getCheckedOutFiles();
+
+        System.out.println( "Checked out these files: " );
+
+        for ( Iterator it = checkedOutFiles.iterator(); it.hasNext(); )
+        {
+            ScmFile file = (ScmFile) it.next();
+
+            System.out.println( " " + file.getPath() );
+        }
+    }
++------------------------------------------+
+
+** Update command
+
++------------------------------------------+
+    public void update( ScmRepository scmRepository, File workingDirectory, String tag )
+        throws ScmException
+    {
+        if ( !workingDirectory.exists() )
+        {
+            System.err.println( "The working directory doesn't exist: '" + workingDirectory.getAbsolutePath() + "'." );
+
+            return;
+        }
+
+        UpdateScmResult result = scmManager.getProviderByRepository( scmRepository )
+            .update( scmRepository, new ScmFileSet( workingDirectory ), tag );
+
+        if ( !result.isSuccess() )
+        {
+            showError( result );
+
+            return;
+        }
+
+        List updatedFiles = result.getUpdatedFiles();
+
+        System.out.println( "Updated these files: " );
+
+        for ( Iterator it = updatedFiles.iterator(); it.hasNext(); )
+        {
+            ScmFile file = (ScmFile) it.next();
+
+            System.out.println( " " + file.getPath() );
+        }
+    }
++------------------------------------------+
+
+Sample code
+
+    The code above is available there: {{{http://svn.apache.org/repos/asf/maven/scm/trunk/maven-scm-client/}Maven-SCM client}}.
\ No newline at end of file

Propchange: maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/scm/trunk/maven-scm-site/src/site/apt/guide/usage.apt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/scm/trunk/maven-scm-site/src/site/site.xml
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-site/src/site/site.xml?view=diff&rev=522898&r1=522897&r2=522898
==============================================================================
--- maven/scm/trunk/maven-scm-site/src/site/site.xml (original)
+++ maven/scm/trunk/maven-scm-site/src/site/site.xml Tue Mar 27 06:22:21 2007
@@ -59,7 +59,8 @@
         <item name="Visual Source Safe" href="/vss.html"/>
       </item>
       <item name="Guides" href="/guides.html" collapse="true">
-        <item name="New provider" href="/guide/new_provider.html"/>
+        <item name="How to use Maven-SCM in my application" href="/guide/usage.html"/>
+        <item name="How to write a new provider" href="/guide/new_provider.html"/>
       </item>
       <item name="SCM providers Matrix" href="http://docs.codehaus.org/display/SCM/SCM+Matrix"/>
     </menu>