use svnkit to create svn repositories

This commit is contained in:
Sebastian Sdorra
2010-11-14 14:09:18 +01:00
parent da793d4481
commit 7752db6811
3 changed files with 75 additions and 31 deletions

View File

@@ -23,12 +23,22 @@
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>${svnkit.version}</version>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit-dav</artifactId>
<version>1.3.4</version>
<version>${svnkit.version}</version>
</dependency>
</dependencies>
<properties>
<svnkit.version>1.3.4</svnkit.version>
</properties>
</project>

View File

@@ -37,12 +37,19 @@ package sonia.scm.repository;
import com.google.inject.Singleton;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.io.SVNRepositoryFactory;
import sonia.scm.Type;
import sonia.scm.io.ExtendedCommand;
//~--- JDK imports ------------------------------------------------------------
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
@@ -85,14 +92,21 @@ public class SvnRepositoryHandler
* @param repository
* @param directory
*
* @return
* @throws IOException
* @throws RepositoryException
*/
@Override
protected ExtendedCommand buildCreateCommand(Repository repository,
File directory)
protected void create(Repository repository, File directory)
throws RepositoryException, IOException
{
return new ExtendedCommand(config.getSvnAdminBinary(), "create",
directory.getPath());
try
{
SVNRepositoryFactory.createLocalRepository(directory, true, false);
}
catch (SVNException ex)
{
throw new RepositoryException(ex);
}
}
//~--- get methods ----------------------------------------------------------

View File

@@ -29,6 +29,8 @@
*
*/
package sonia.scm.repository;
//~--- non-JDK imports --------------------------------------------------------
@@ -72,18 +74,6 @@ public abstract class AbstractSimpleRepositoryHandler<C extends SimpleRepository
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @param repository
* @param directory
*
* @return
*/
protected abstract ExtendedCommand buildCreateCommand(Repository repository,
File directory);
/**
* Method description
*
@@ -106,19 +96,7 @@ public abstract class AbstractSimpleRepositoryHandler<C extends SimpleRepository
throw new RepositoryAllreadyExistExeption();
}
ExtendedCommand cmd = buildCreateCommand(repository, directory);
CommandResult result = cmd.execute();
if (!result.isSuccessfull())
{
StringBuilder msg = new StringBuilder("command exit with error ");
msg.append(result.getReturnCode()).append(" and message: '");
msg.append(result.getOutput()).append("'");
throw new RepositoryException(msg.toString());
}
create(repository, directory);
postCreate(repository, directory);
repository.setType(getType().getName());
storeRepositoryConfig(repository);
@@ -273,6 +251,48 @@ public abstract class AbstractSimpleRepositoryHandler<C extends SimpleRepository
//~--- methods --------------------------------------------------------------
/**
* Method description
*
*
* @param repository
* @param directory
*
* @return
*/
protected ExtendedCommand buildCreateCommand(Repository repository,
File directory)
{
throw new UnsupportedOperationException("method is not implemented");
}
/**
* Method description
*
*
* @param repository
* @param directory
*
* @throws IOException
* @throws RepositoryException
*/
protected void create(Repository repository, File directory)
throws RepositoryException, IOException
{
ExtendedCommand cmd = buildCreateCommand(repository, directory);
CommandResult result = cmd.execute();
if (!result.isSuccessfull())
{
StringBuilder msg = new StringBuilder("command exit with error ");
msg.append(result.getReturnCode()).append(" and message: '");
msg.append(result.getOutput()).append("'");
throw new RepositoryException(msg.toString());
}
}
/**
* Method description
*