diff --git a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ScmUrlProvider.java b/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ScmUrlProvider.java
deleted file mode 100644
index a7033913db..0000000000
--- a/scm-clients/scm-client-api/src/main/java/sonia/scm/client/ScmUrlProvider.java
+++ /dev/null
@@ -1,483 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.client;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import sonia.scm.url.UrlProvider;
-import sonia.scm.util.Util;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.text.MessageFormat;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated use {@link UrlProvider} instead. For example:
- *
- * {@code
- * URLProvider provider = URLProviderFactory.createUrlProvider(
- * baseUrl,
- * UrlProviderFactory.TYPE_RESTAPI_XML
- * );
- * String authUrl = provider.getAuthenticationUrl();
- * }
- *
- */
-public class ScmUrlProvider
-{
-
- /** Field description */
- public static final String API_PATH = "/api/rest/";
-
- /** Field description */
- public static final String URLPART_AUTHENTICATION = "authentication";
-
- /** Field description */
- public static final String URLPART_AUTHENTICATION_LOGIN =
- "authentication/login";
-
- /** Field description */
- public static final String URLPART_GROUP = "groups/";
-
- /** Field description */
- public static final String URLPART_GROUPS = "groups";
-
- /** Field description */
- public static final String URLPART_REPOSITORIES = "repositories";
-
- /** Field description */
- public static final String URLPART_REPOSITORY = "repositories/";
-
- /** Field description */
- public static final String URLPART_USER = "users/";
-
- /** Field description */
- public static final String URLPART_USERS = "users";
-
- /** Field description */
- public static final String URLPATTERN_BLAME = "repositories/{0}/blame";
-
- /** Field description */
- public static final String URLPATTERN_BROWSE = "repositories/{0}/browse";
-
- /** Field description */
- public static final String URLPATTERN_CHANGESETS =
- "repositories/{0}/changesets";
-
- /** Field description */
- public static final String URLPATTERN_CONTENT = "repositories/{0}/content";
-
- /** the logger for classVar */
- private static final Logger logger =
- LoggerFactory.getLogger(ScmUrlProvider.class);
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- * @param baseUrl
- */
- public ScmUrlProvider(String baseUrl)
- {
- if (!baseUrl.endsWith(API_PATH))
- {
- this.baseUrl = baseUrl.concat(API_PATH);
- }
- else
- {
- this.baseUrl = baseUrl;
- }
-
- if (logger.isDebugEnabled())
- {
- logger.debug("create new url provider with baseurl {}", this.baseUrl);
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getAuthenticationLoginUrl()
- {
- return getResourceUrl(URLPART_AUTHENTICATION_LOGIN);
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getAuthenticationUrl()
- {
- return getResourceUrl(URLPART_AUTHENTICATION);
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getBaseUrl()
- {
- return baseUrl;
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryId
- * @param path
- * @param revision
- *
- * @return
- */
- public String getBlameUrl(String repositoryId, String path, String revision)
- {
- String url = MessageFormat.format(getResourceUrl(URLPATTERN_BLAME),
- repositoryId);
-
- return appendParameter(url, path, revision);
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getExtension()
- {
- return extension;
- }
-
- /**
- * Method description
- *
- *
- * @param name
- *
- * @return
- */
- public String getGroupUrl(String name)
- {
- return getResourceUrl(URLPART_GROUP.concat(name));
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getGroupsUrl()
- {
- return getResourceUrl(URLPART_GROUPS);
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getRepositoriesUrl()
- {
- return getResourceUrl(URLPART_REPOSITORIES);
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryId
- * @param revision
- * @param path
- * @since 1.8
- *
- * @return
- */
- public String getRepositoryBrowseUrl(String repositoryId, String path,
- String revision)
- {
- String url = MessageFormat.format(getResourceUrl(URLPATTERN_BROWSE),
- repositoryId);
-
- return appendParameter(url, path, revision);
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryId
- * @since 1.8
- *
- * @param path
- * @param revision
- * @param start
- * @param limit
- * @return
- */
- public String getRepositoryChangesetUrl(String repositoryId, String path,
- String revision, int start, int limit)
- {
- String url = MessageFormat.format(getResourceUrl(URLPATTERN_CHANGESETS),
- repositoryId);
- String s = "?";
-
- if (start >= 0)
- {
- url = url.concat(s).concat("start=").concat(String.valueOf(start));
- s = "&";
- }
-
- if (limit > 0)
- {
- url = url.concat(s).concat("limit=").concat(String.valueOf(limit));
- s = "&";
- }
-
- if (path != null)
- {
- url = url.concat(s).concat("path=").concat(path);
- s = "&";
- }
-
- if (revision != null)
- {
- url = url.concat(s).concat("revision=").concat(revision);
- s = "&";
- }
-
- return url;
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryId
- * @since 1.8
- *
- * @param start
- * @param limit
- * @return
- */
- public String getRepositoryChangesetUrl(String repositoryId, int start,
- int limit)
- {
- return getRepositoryChangesetUrl(repositoryId, null, null, start, limit);
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryId
- * @param path
- * @param revision
- * @since 1.8
- *
- * @return
- */
- public String getRepositoryContentUrl(String repositoryId, String path,
- String revision)
- {
- String url = MessageFormat.format(getResourceUrl(URLPATTERN_CONTENT,
- false), repositoryId);
-
- url = url.concat("?path=").concat(path);
-
- if (Util.isNotEmpty(revision))
- {
- url = url.concat("&revision=").concat(revision);
- }
-
- return url;
- }
-
- /**
- * Method description
- *
- *
- * @param id
- *
- * @return
- */
- public String getRepositoryUrl(String id)
- {
- return getResourceUrl(URLPART_REPOSITORY.concat(id));
- }
-
- /**
- * Method description
- *
- *
- * @param urlPart
- *
- * @return
- */
- public String getResourceUrl(String urlPart)
- {
- return getResourceUrl(urlPart, true);
- }
-
- /**
- * Method description
- *
- *
- * @param urlPart
- * @param appendExtension
- * @since 1.8
- *
- * @return
- */
- public String getResourceUrl(String urlPart, boolean appendExtension)
- {
- String resourceUrl = baseUrl.concat(urlPart);
-
- if (appendExtension)
- {
- resourceUrl = resourceUrl.concat(extension);
- }
-
- if (logger.isTraceEnabled())
- {
- logger.trace("return resourceurl {}", resourceUrl);
- }
-
- return resourceUrl;
- }
-
- /**
- * Method description
- *
- *
- * @param name
- *
- * @return
- */
- public String getUserUrl(String name)
- {
- return getResourceUrl(URLPART_USER.concat(name));
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getUsersUrl()
- {
- return getResourceUrl(URLPART_USERS);
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param baseUrl
- */
- public void setBaseUrl(String baseUrl)
- {
- this.baseUrl = baseUrl;
- }
-
- /**
- * Method description
- *
- *
- * @param extension
- */
- public void setExtension(String extension)
- {
- this.extension = extension;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param url
- * @param path
- * @param revision
- *
- * @return
- */
- private String appendParameter(String url, String path, String revision)
- {
- String s = "?";
-
- if (Util.isNotEmpty(path))
- {
- url = url.concat(s).concat("path=").concat(path);
- s = "&";
- }
-
- if (Util.isNotEmpty(revision))
- {
- url = url.concat(s).concat("revision=").concat(revision);
- }
-
- return url;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private String baseUrl;
-
- /** Field description */
- private String extension = ".xml";
-}
diff --git a/scm-test/pom.xml b/scm-test/pom.xml
index 5286fb1419..8fca35d1e4 100644
--- a/scm-test/pom.xml
+++ b/scm-test/pom.xml
@@ -51,35 +51,7 @@
slf4j-simple
${slf4j.version}
-
-
-
-
- sonia.jgit
- org.eclipse.jgit
- ${jgit.version}
-
-
-
-
-
- sonia.svnkit
- svnkit
- ${svnkit.version}
-
-
+
-
-
-
-
-
- jgit-repository
- jgit release repository
- http://download.eclipse.org/jgit/maven
-
-
-
-
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java
deleted file mode 100644
index 5c2ce4c1f7..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/AbstractRepositoryClient.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated
- */
-@Deprecated
-public abstract class AbstractRepositoryClient implements RepositoryClient
-{
-
- /**
- * Constructs ...
- *
- *
- * @param localRepository
- * @param remoteRepository
- */
- public AbstractRepositoryClient(File localRepository, String remoteRepository)
- {
- this.localRepository = localRepository;
- this.remoteRepository = remoteRepository;
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getLocalRepository()
- {
- return localRepository;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getRemoteRepository()
- {
- return remoteRepository;
- }
-
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- protected File localRepository;
-
- /** Field description */
- protected String remoteRepository;
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java
deleted file mode 100644
index c33b5ae36f..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/GitRepositoryClient.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.eclipse.jgit.api.AddCommand;
-import org.eclipse.jgit.api.CommitCommand;
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.GitCommand;
-import org.eclipse.jgit.dircache.DirCache;
-import org.eclipse.jgit.dircache.DirCacheCheckout;
-import org.eclipse.jgit.errors.IncorrectObjectTypeException;
-import org.eclipse.jgit.errors.MissingObjectException;
-import org.eclipse.jgit.errors.NoRemoteRepositoryException;
-import org.eclipse.jgit.errors.NotSupportedException;
-import org.eclipse.jgit.errors.TransportException;
-import org.eclipse.jgit.internal.storage.file.FileRepository;
-import org.eclipse.jgit.lib.Constants;
-import org.eclipse.jgit.lib.Ref;
-import org.eclipse.jgit.lib.RefComparator;
-import org.eclipse.jgit.lib.RefUpdate;
-import org.eclipse.jgit.lib.TextProgressMonitor;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.transport.CredentialsProvider;
-import org.eclipse.jgit.transport.FetchResult;
-import org.eclipse.jgit.transport.PushResult;
-import org.eclipse.jgit.transport.RefSpec;
-import org.eclipse.jgit.transport.RemoteConfig;
-import org.eclipse.jgit.transport.RemoteRefUpdate;
-import org.eclipse.jgit.transport.TrackingRefUpdate;
-import org.eclipse.jgit.transport.Transport;
-import org.eclipse.jgit.transport.URIish;
-import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
-
-import sonia.scm.util.Util;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-import java.io.IOException;
-
-import java.net.URISyntaxException;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated
- */
-@Deprecated
-public class GitRepositoryClient extends AbstractRepositoryClient
-{
-
- /**
- * Constructs ...
- *
- *
- * @param localRepository
- * @param remoteRepository
- * @param username
- * @param password
- *
- *
- * @throws IOException
- * @throws URISyntaxException
- */
- GitRepositoryClient(File localRepository, String remoteRepository,
- String username, String password)
- throws URISyntaxException, IOException
- {
- super(localRepository, remoteRepository);
- uri = new URIish(remoteRepository);
-
- if ((username != null) && (password != null))
- {
- uri.setUser(username);
- uri.setPass(password);
- credentialsProvider = new UsernamePasswordCredentialsProvider(username,
- password);
- }
-
- this.repository = new FileRepository(new File(localRepository,
- Constants.DOT_GIT));
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param file
- * @param others
- *
- * @throws RepositoryClientException
- */
- @Override
- public void add(String file, String... others)
- throws RepositoryClientException
- {
- AddCommand cmd = new Git(repository).add();
-
- cmd.addFilepattern(file);
-
- if (others != null)
- {
- for (String f : others)
- {
- cmd.addFilepattern(f);
- }
- }
-
- callCommand(cmd);
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void checkout() throws RepositoryClientException
- {
- try
- {
- final FetchResult r = runFetch();
-
- if (r != null)
- {
- for (TrackingRefUpdate ru : r.getTrackingRefUpdates())
- {
- switch (ru.getResult())
- {
- case IO_FAILURE :
- case LOCK_FAILURE :
- case REJECTED :
- case REJECTED_CURRENT_BRANCH :
- throw new RepositoryClientException("could not checkout, status "
- + ru.getResult().name());
- }
- }
-
- Ref branch = guessHEAD(r);
-
- doCheckout(branch);
- }
- }
- catch (RepositoryClientException ex)
- {
- throw ex;
- }
- catch (Exception ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param message
- *
- * @throws RepositoryClientException
- */
- @Override
- public void commit(String message) throws RepositoryClientException
- {
- try
- {
- CommitCommand cmd = new Git(repository).commit();
-
- cmd.setMessage(message);
- callCommand(cmd);
-
- List transports = Transport.openAll(repository, "origin",
- Transport.Operation.PUSH);
-
- for (Transport transport : transports)
- {
- List refSpecs = new ArrayList();
- RefSpec rs = new RefSpec("+refs/heads/master:refs/heads/master");
-
- refSpecs.add(rs);
-
- if (credentialsProvider != null)
- {
- transport.setCredentialsProvider(credentialsProvider);
- }
-
- Collection toPush =
- transport.findRemoteRefUpdatesFor(refSpecs);
-
- try
- {
- PushResult result = transport.push(new TextProgressMonitor(), toPush);
- Collection refUpdates = result.getRemoteUpdates();
-
- if (Util.isEmpty(refUpdates))
- {
- throw new RepositoryClientException("no ref updated");
- }
-
- for (RemoteRefUpdate refUpdate : refUpdates)
- {
- switch (refUpdate.getStatus())
- {
- case OK :
- case UP_TO_DATE :
- case NON_EXISTING :
- break;
-
- case NOT_ATTEMPTED :
- case AWAITING_REPORT :
- case REJECTED_NODELETE :
- case REJECTED_NONFASTFORWARD :
- case REJECTED_REMOTE_CHANGED :
- case REJECTED_OTHER_REASON :
- throw new RepositoryClientException(
- "could not update ref ".concat(refUpdate.getSrcRef()).concat(
- " status ".concat(refUpdate.getStatus().toString())));
- }
- }
- }
- finally
- {
- transport.close();
- }
- }
- }
- catch (RepositoryClientException ex)
- {
- throw ex;
- }
- catch (Exception ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void init() throws RepositoryClientException
- {
- try
- {
- repository.create(false);
- addRemote("origin", new URIish(remoteRepository), "master", null, true,
- null);
- }
- catch (Exception ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param remoteName
- * @param uri
- * @param branchName
- * @param tagName
- * @param allSelected
- * @param selectedBranches
- *
- * @throws IOException
- * @throws URISyntaxException
- */
- private void addRemote(final String remoteName, final URIish uri,
- final String branchName, final String tagName, final boolean allSelected,
- final Collection[ selectedBranches)
- throws URISyntaxException, IOException
- {
-
-// add remote configuration
- final RemoteConfig rc = new RemoteConfig(repository.getConfig(),
- remoteName);
-
- rc.addURI(uri);
-
- final String dst = Constants.R_REMOTES + rc.getName();
- RefSpec wcrs = new RefSpec();
-
- wcrs = wcrs.setForceUpdate(true);
- wcrs = wcrs.setSourceDestination(Constants.R_HEADS + "*", dst + "/*");
-
- if (allSelected)
- {
- rc.addFetchRefSpec(wcrs);
- }
- else
- {
- for (final Ref ref : selectedBranches)
- {
- if (wcrs.matchSource(ref))
- {
- rc.addFetchRefSpec(wcrs.expandFromSource(ref));
- }
- }
- }
-
- rc.update(repository.getConfig());
- repository.getConfig().save();
-
-// setup the default remote branch for branchName
- repository.getConfig().setString("branch", branchName, "remote",
- remoteName);
-
- if (branchName != null)
- {
- repository.getConfig().setString("branch", branchName, "merge",
- Constants.R_HEADS + branchName);
- }
-
- if (tagName != null)
- {
- repository.getConfig().setString("branch", branchName, "merge",
- Constants.R_TAGS + branchName);
- }
-
- repository.getConfig().save();
- }
-
- /**
- * Method description
- *
- *
- * @param cmd
- *
- * @throws RepositoryClientException
- */
- private void callCommand(GitCommand cmd) throws RepositoryClientException
- {
- try
- {
- cmd.call();
- }
- catch (Exception ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param branch
- *
- * @throws IOException
- */
- private void doCheckout(final Ref branch) throws IOException
- {
- if (!Constants.HEAD.equals(branch.getName()))
- {
- RefUpdate u = repository.updateRef(Constants.HEAD);
-
- u.disableRefLog();
- u.link(branch.getName());
- }
-
- RevCommit commit = parseCommit(branch);
- RefUpdate u = repository.updateRef(Constants.HEAD);
-
- u.setNewObjectId(commit);
- u.forceUpdate();
-
- DirCache dc = repository.lockDirCache();
- DirCacheCheckout co = new DirCacheCheckout(repository, dc,
- commit.getTree());
-
- co.checkout();
- }
-
- /**
- * Method description
- *
- *
- * @param result
- *
- * @return
- */
- private Ref guessHEAD(final FetchResult result)
- {
- final Ref idHEAD = result.getAdvertisedRef(Constants.HEAD);
- final List][ availableRefs = new ArrayList][();
- Ref head = null;
-
- for (final Ref r : result.getAdvertisedRefs())
- {
- final String n = r.getName();
-
- if (!n.startsWith(Constants.R_HEADS))
- {
- continue;
- }
-
- availableRefs.add(r);
-
- if ((idHEAD == null) || (head != null))
- {
- continue;
- }
-
- if (r.getObjectId().equals(idHEAD.getObjectId()))
- {
- head = r;
- }
- }
-
- Collections.sort(availableRefs, RefComparator.INSTANCE);
-
- if ((idHEAD != null) && (head == null))
- {
- head = idHEAD;
- }
-
- return head;
- }
-
- /**
- * Method description
- *
- *
- * @param branch
- *
- * @return
- *
- * @throws IOException
- * @throws IncorrectObjectTypeException
- * @throws MissingObjectException
- */
- private RevCommit parseCommit(Ref branch)
- throws MissingObjectException, IncorrectObjectTypeException, IOException
- {
- try (RevWalk rw = new RevWalk(repository))
- {
- return rw.parseCommit(branch.getObjectId());
- }
- }
-
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws NotSupportedException
- * @throws RepositoryClientException
- * @throws TransportException
- * @throws URISyntaxException
- */
- private FetchResult runFetch()
- throws NotSupportedException, URISyntaxException, TransportException,
- RepositoryClientException
- {
- FetchResult r = null;
-
- try
- {
- Transport tn = Transport.open(repository, "origin");
-
- if (credentialsProvider != null)
- {
- tn.setCredentialsProvider(credentialsProvider);
- }
-
- List refSpecs = new ArrayList();
- RefSpec rs = new RefSpec("+refs/heads/master:refs/heads/master");
-
- try
- {
- r = tn.fetch(new TextProgressMonitor(), refSpecs);
- }
- finally
- {
- tn.close();
- }
- }
- catch (NoRemoteRepositoryException ex)
- {
-
- // empty repository, call init
- init();
- }
-
- return r;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private CredentialsProvider credentialsProvider;
-
- /** Field description */
- private RemoteConfig remoteConfig;
-
- /** Field description */
- private FileRepository repository;
-
- /** Field description */
- private URIish uri;
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java
deleted file mode 100644
index 83c03c2c0a..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/HgRepositoryClient.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import sonia.scm.io.SimpleCommand;
-import sonia.scm.io.SimpleCommandResult;
-import sonia.scm.util.IOUtil;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated
- */
-@Deprecated
-public class HgRepositoryClient extends AbstractRepositoryClient
-{
-
- /**
- * Constructs ...
- *
- *
- * @param localRepository
- * @param remoteRepository
- * @param username
- * @param password
- */
- HgRepositoryClient(File localRepository, String remoteRepository,
- String username, String password)
- {
- super(localRepository, remoteRepository);
-
- if ((username != null) && (password != null))
- {
- String scheme = remoteRepository.substring(0,
- remoteRepository.indexOf("://") + 3);
- StringBuilder buffer = new StringBuilder(scheme);
-
- buffer.append(username).append(":").append(password).append("@");
- buffer.append(remoteRepository.substring(scheme.length()));
- remoteURL = buffer.toString();
- }
- else
- {
- remoteURL = remoteRepository;
- }
-
- hg = IOUtil.search("hg");
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param file
- * @param others
- *
- * @throws RepositoryClientException
- */
- @Override
- public void add(String file, String... others)
- throws RepositoryClientException
- {
- addFile(file);
-
- if (others != null)
- {
- for (String o : others)
- {
- addFile(o);
- }
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void checkout() throws RepositoryClientException
- {
- if (!isInitialized())
- {
- init();
- }
-
- SimpleCommand cmd = new SimpleCommand(hg, "-R",
- localRepository.getAbsolutePath(), "pull", "-u",
- remoteURL);
-
- execute(cmd);
- }
-
- /**
- * Method description
- *
- *
- * @param message
- *
- * @throws RepositoryClientException
- */
- @Override
- public void commit(String message) throws RepositoryClientException
- {
- SimpleCommand cmd = null;
-
- if (pendingCommit)
- {
- cmd = new SimpleCommand(hg, "-R", localRepository.getAbsolutePath(),
- "commit", "-m", message);
- execute(cmd);
- pendingCommit = false;
- }
-
- cmd = new SimpleCommand(hg, "-R", localRepository.getAbsolutePath(),
- "push", remoteURL);
- execute(cmd);
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void init() throws RepositoryClientException
- {
- SimpleCommand cmd = new SimpleCommand(hg, "init",
- localRepository.getAbsolutePath());
-
- execute(cmd);
- }
-
- /**
- * Method description
- *
- *
- * @param file
- *
- * @throws RepositoryClientException
- */
- private void addFile(String file) throws RepositoryClientException
- {
- SimpleCommand cmd = new SimpleCommand(hg, "-R",
- localRepository.getAbsolutePath(), "add",
- new File(localRepository, file).getAbsolutePath());
-
- execute(cmd);
- pendingCommit = true;
- }
-
- /**
- * Method description
- *
- *
- * @param cmd
- *
- * @throws RepositoryClientException
- */
- private void execute(SimpleCommand cmd) throws RepositoryClientException
- {
- try
- {
- SimpleCommandResult result = cmd.execute();
-
- if (!result.isSuccessfull())
- {
- throw new RepositoryClientException(result.getOutput());
- }
- }
- catch (IOException ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- private boolean isInitialized()
- {
- return new File(localRepository, ".hg").exists();
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private String hg;
-
- /** Field description */
- private boolean pendingCommit = false;
-
- /** Field description */
- private String remoteURL;
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java
deleted file mode 100644
index 499d1d5d5e..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClient.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated use {@link sonia.scm.repository.client.api.RepositoryClient}
- */
-@Deprecated
-public interface RepositoryClient
-{
-
- /**
- * Method description
- *
- *
- * @param file
- * @param others
- *
- * @throws RepositoryClientException
- */
- public void add(String file, String... others)
- throws RepositoryClientException;
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- public void checkout() throws RepositoryClientException;
-
- /**
- * Method description
- *
- *
- * @param message
- *
- * @throws RepositoryClientException
- */
- public void commit(String message) throws RepositoryClientException;
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- public void init() throws RepositoryClientException;
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getLocalRepository();
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getRemoteRepository();
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientException.java b/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientException.java
deleted file mode 100644
index 96a5e3362f..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientException.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated
- */
-@Deprecated
-public class RepositoryClientException extends Exception
-{
-
- /** Field description */
- private static final long serialVersionUID = -6017272751596608450L;
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- */
- public RepositoryClientException() {}
-
- /**
- * Constructs ...
- *
- *
- * @param message
- */
- public RepositoryClientException(String message)
- {
- super(message);
- }
-
- /**
- * Constructs ...
- *
- *
- * @param throwable
- */
- public RepositoryClientException(Throwable throwable)
- {
- super(throwable);
- }
-
- /**
- * Constructs ...
- *
- *
- * @param message
- * @param throwable
- */
- public RepositoryClientException(String message, Throwable throwable)
- {
- super(message, throwable);
- }
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientFactory.java b/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientFactory.java
deleted file mode 100644
index 8e662f2d5a..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/RepositoryClientFactory.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-/**
- *
- * @author Sebastian Sdorra
- * @deprecated use {@link sonia.scm.repository.client.api.RepositoryClientFactory}
- */
-@Deprecated
-public final class RepositoryClientFactory
-{
-
- /**
- * Constructs ...
- *
- */
- private RepositoryClientFactory() {}
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param type
- * @param localRepository
- * @param remoteRepository
- *
- * @return
- *
- * @throws RepositoryClientException
- */
- public static RepositoryClient createClient(String type,
- File localRepository, String remoteRepository)
- throws RepositoryClientException
- {
- return createClient(type, localRepository, remoteRepository, null, null);
- }
-
- /**
- * Method description
- *
- *
- * @param type
- * @param localRepository
- * @param remoteRepository
- * @param username
- * @param password
- *
- * @return
- *
- * @throws RepositoryClientException
- */
- public static RepositoryClient createClient(String type,
- File localRepository, String remoteRepository, String username,
- String password)
- throws RepositoryClientException
- {
- RepositoryClient client = null;
-
- try
- {
- if ("git".equals(type))
- {
- client = new GitRepositoryClient(localRepository, remoteRepository,
- username, password);
- }
- else if ("svn".equals(type))
- {
- client = new SvnRepositoryClient(localRepository, remoteRepository,
- username, password);
- }
- else if ("hg".equals(type))
- {
- client = new HgRepositoryClient(localRepository, remoteRepository,
- username, password);
- }
- }
- catch (Exception ex)
- {
- throw new RepositoryClientException(ex);
- }
-
- return client;
- }
-}
diff --git a/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java b/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java
deleted file mode 100644
index 36bea70f96..0000000000
--- a/scm-test/src/main/java/sonia/scm/repository/client/SvnRepositoryClient.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.repository.client;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.tmatesoft.svn.core.SVNCommitInfo;
-import org.tmatesoft.svn.core.SVNDepth;
-import org.tmatesoft.svn.core.SVNErrorMessage;
-import org.tmatesoft.svn.core.SVNException;
-import org.tmatesoft.svn.core.SVNURL;
-import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory;
-import org.tmatesoft.svn.core.internal.wc.DefaultSVNOptions;
-import org.tmatesoft.svn.core.wc.SVNClientManager;
-import org.tmatesoft.svn.core.wc.SVNCommitClient;
-import org.tmatesoft.svn.core.wc.SVNRevision;
-import org.tmatesoft.svn.core.wc.SVNUpdateClient;
-import org.tmatesoft.svn.core.wc.SVNWCClient;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.tmatesoft.svn.core.internal.util.SVNURLUtil;
-
-/**
- *
- * @author Sebastian Sdorra
- *
- * @deprecated
- */
-@Deprecated
-public class SvnRepositoryClient extends AbstractRepositoryClient
-{
-
- /**
- * Constructs ...
- *
- *
- * @param localRepository
- * @param remoteRepository
- * @param username
- * @param password
- *
- * @throws SVNException
- */
- SvnRepositoryClient(File localRepository, String remoteRepository,
- String username, String password)
- throws SVNException
- {
- super(localRepository, remoteRepository);
-
- DefaultSVNOptions options = new DefaultSVNOptions();
-
- options.setAuthStorageEnabled(false);
- options.setUseAutoProperties(false);
-
- if ((username != null) && (password != null))
- {
- client = SVNClientManager.newInstance(options, username, password);
- }
- else
- {
- client = SVNClientManager.newInstance(options);
- }
-
- remoteRepositoryURL = SVNURL.parseURIEncoded(remoteRepository);
- DAVRepositoryFactory.setup();
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param file
- * @param others
- *
- * @throws RepositoryClientException
- */
- @Override
- public void add(String file, String... others)
- throws RepositoryClientException
- {
- checkout();
-
- List files = new ArrayList();
-
- files.add(new File(localRepository, file));
-
- if (others != null)
- {
- for (String f : others)
- {
- files.add(new File(localRepository, f));
- }
- }
-
- addFiles(files);
- pendingFiles.addAll(files);
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void checkout() throws RepositoryClientException
- {
- try
- {
- SVNUpdateClient updateClient = client.getUpdateClient();
-
- updateClient.doCheckout(remoteRepositoryURL, localRepository,
- SVNRevision.UNDEFINED, SVNRevision.HEAD,
- SVNDepth.FILES, false);
- }
- catch (SVNException ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param message
- *
- * @throws RepositoryClientException
- */
- @Override
- public void commit(String message) throws RepositoryClientException
- {
- checkout();
-
- SVNCommitClient cc = client.getCommitClient();
-
- try
- {
- SVNCommitInfo info = cc.doCommit(pendingFiles.toArray(new File[0]), true,
- message, null, null, true, true,
- SVNDepth.INFINITY);
- SVNErrorMessage msg = info.getErrorMessage();
-
- if (msg != null)
- {
- throw new RepositoryClientException(msg.getFullMessage());
- }
-
- pendingFiles.clear();
- }
- catch (SVNException ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws RepositoryClientException
- */
- @Override
- public void init() throws RepositoryClientException
- {
-
- // do nothing
- }
-
- /**
- * Method description
- *
- *
- *
- * @param files
- *
- * @throws RepositoryClientException
- */
- private void addFiles(List files) throws RepositoryClientException
- {
- SVNWCClient wClient = client.getWCClient();
-
- try
- {
- wClient.doAdd(files.toArray(new File[0]), true, false, false,
- SVNDepth.INFINITY, false, false, false);
- }
- catch (SVNException ex)
- {
- throw new RepositoryClientException(ex);
- }
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- List pendingFiles = new ArrayList();
-
- /** Field description */
- private SVNClientManager client;
-
- /** Field description */
- private SVNURL remoteRepositoryURL;
-}
]