Skip to content

Commit

Permalink
Merge pull request #10 from jenkinsci/jenkins-21916
Browse files Browse the repository at this point in the history
[FIXED JENKINS-21916] Support Subversion Plugin 2.x
  • Loading branch information
hugueschabot committed Feb 27, 2014
2 parents dcc521a + b969146 commit 19f07a3
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 23 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.426</version>
<version>1.466</version>
</parent>

<artifactId>svnmerge</artifactId>
Expand All @@ -24,7 +24,7 @@
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>subversion</artifactId>
<version>1.25</version>
<version>2.2</version>
</dependency>
</dependencies>

Expand Down
23 changes: 16 additions & 7 deletions src/main/java/jenkins/plugins/svnmerge/FeatureBranchProperty.java
Expand Up @@ -15,14 +15,17 @@
import hudson.scm.SCM;
import hudson.scm.SubversionEventHandlerImpl;
import hudson.scm.SubversionSCM;
import hudson.scm.SvnClientManager;
import hudson.scm.SubversionSCM.ModuleLocation;
import hudson.util.IOException2;
import jenkins.model.Jenkins;
import net.sf.json.JSONObject;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
import org.tmatesoft.svn.core.ISVNLogEntryHandler;
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmatesoft.svn.core.SVNErrorMessage;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNLogEntry;
import org.tmatesoft.svn.core.SVNURL;
Expand Down Expand Up @@ -144,8 +147,9 @@ public boolean prebuild(AbstractBuild<?, ?> build, BuildListener listener) {
* (typically this means a merge conflict.)
*/
public long rebase(final TaskListener listener, final long upstreamRev) throws IOException, InterruptedException {
final ISVNAuthenticationProvider provider = Jenkins.getInstance().getDescriptorByType(
SubversionSCM.DescriptorImpl.class).createAuthenticationProvider();
final SubversionSCM svn = (SubversionSCM) getOwner().getScm();
final ISVNAuthenticationProvider provider = svn.createAuthenticationProvider(getOwner(), svn.getLocations()[0]);

return owner.getModuleRoot().act(new FileCallable<Long>() {
public Long invoke(File mr, VirtualChannel virtualChannel) throws IOException {
try {
Expand All @@ -160,8 +164,10 @@ public void handleEvent(SVNEvent event, double progress) throws SVNException {
}
};

SvnClientManager svnm = SubversionSCM.createClientManager(provider);

SVNURL up = getUpstreamURL();
SVNClientManager cm = SubversionSCM.createSvnClientManager(provider);
SVNClientManager cm = svnm.getCore();
cm.setEventHandler(printHandler);

SVNWCClient wc = cm.getWCClient();
Expand Down Expand Up @@ -242,8 +248,9 @@ public IntegrationResult(long mergeCommit, SVNRevision integrationSource) {
public IntegrationResult integrate(final TaskListener listener, final String branchURL, final long branchRev, final String commitMessage) throws IOException, InterruptedException {
final Long lastIntegrationSourceRevision = getlastIntegrationSourceRevision();

final ISVNAuthenticationProvider provider = Jenkins.getInstance().getDescriptorByType(
SubversionSCM.DescriptorImpl.class).createAuthenticationProvider();
final SubversionSCM svn = (SubversionSCM) getUpstreamProject().getScm();
final ISVNAuthenticationProvider provider = svn.createAuthenticationProvider(getUpstreamProject(), svn.getLocations()[0]);

return owner.getModuleRoot().act(new FileCallable<IntegrationResult>() {
public IntegrationResult invoke(File mr, VirtualChannel virtualChannel) throws IOException {
try {
Expand All @@ -258,8 +265,10 @@ public void handleEvent(SVNEvent event, double progress) throws SVNException {
}
};

SvnClientManager svnm = SubversionSCM.createClientManager(provider);

SVNURL up = getUpstreamURL();
SVNClientManager cm = SubversionSCM.createSvnClientManager(provider);
SVNClientManager cm = svnm.getCore();
cm.setEventHandler(printHandler);

// capture the working directory state before the switch
Expand All @@ -270,7 +279,7 @@ public void handleEvent(SVNEvent event, double progress) throws SVNException {

// do we have any meaningful changes in this branch worthy of integration?
if (lastIntegrationSourceRevision !=null) {
final SVNException eureka = new SVNException(null);
final SVNException eureka = new SVNException(SVNErrorMessage.UNKNOWN_ERROR_MESSAGE);
try {
cm.getLogClient().doLog(new File[]{mr},mergeRev,SVNRevision.create(lastIntegrationSourceRevision),mergeRev,true,false,-1,new ISVNLogEntryHandler() {
public void handleLogEntry(SVNLogEntry e) throws SVNException {
Expand Down
Expand Up @@ -2,31 +2,34 @@

import hudson.BulkChange;
import hudson.Util;
import hudson.model.Action;
import hudson.model.AbstractModelObject;
import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.scm.SvnClientManager;
import hudson.scm.SCM;
import hudson.scm.SubversionSCM;
import hudson.scm.SubversionSCM.ModuleLocation;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.ServletException;

import jenkins.model.Jenkins;

import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNNodeKind;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNInfo;
import org.tmatesoft.svn.core.wc.SVNRevision;

import javax.servlet.ServletException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* Project-level {@link Action} that shows the feature branches.
*
Expand Down Expand Up @@ -109,7 +112,8 @@ public void doNewBranch(StaplerRequest req, StaplerResponse rsp, @QueryParameter
url = url.substring(0,m.start())+"/branches/"+name;

if(!attach) {
SVNClientManager svnm = SubversionSCM.createSvnClientManager(project);
SvnClientManager svnm = SubversionSCM.createClientManager(
svn.createAuthenticationProvider(project, firstLocation));
try {
SVNURL dst = SVNURL.parseURIEncoded(url);

Expand Down Expand Up @@ -149,13 +153,17 @@ public void doNewBranch(StaplerRequest req, StaplerResponse rsp, @QueryParameter
SubversionSCM svnScm = (SubversionSCM)copy.getScm();
copy.setScm(
new SubversionSCM(
Arrays.asList(new ModuleLocation(url,firstLocation.getLocalDir())),
svnScm.getWorkspaceUpdater(), svnScm.getBrowser(),
Arrays.asList(firstLocation.withRemote(url)),
svnScm.getWorkspaceUpdater(),
svnScm.getBrowser(),
svnScm.getExcludedRegions(),
svnScm.getExcludedUsers(),
svnScm.getExcludedRevprop(),
svnScm.getExcludedCommitMessages(),
svnScm.getIncludedRegions()
svnScm.getIncludedRegions(),
svnScm.isIgnoreDirPropChanges(),
svnScm.isFilterChangelog(),
svnScm.getAdditionalCredentials()
));
} finally {
bc.commit();
Expand Down

0 comments on commit 19f07a3

Please sign in to comment.