-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Windows
1. Start with a repository structure that contains this: http://svn/repos/trunk/mybranch
2. Create a branch as follows: svn copy http://svn/repos/trunk http://svn/repos/branches/develop
3. Setup a Hudson job that checks out the workspace from: http://svn/repos/branches/develop/mybranch
4. Run the job
5. Try to use the Tag this build function on the build
6. Tag this build will fail with the error message:
ERROR: Failed to tag
org.tmatesoft.svn.core.SVNException: svn: Path 'http://svn/repos/branches/develop/mybranch' does not exist in revision 173,203
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.copyReposToRepos(SVNCopyDriver.java:264)
at org.tmatesoft.svn.core.internal.wc.SVNCopyDriver.setupCopy(SVNCopyDriver.java:628)
at org.tmatesoft.svn.core.wc.SVNCopyClient.doCopy(SVNCopyClient.java:426)
at hudson.scm.SubversionTagAction$TagWorkerThread.perform(SubversionTagAction.java:262)
at hudson.model.TaskThread.run(TaskThread.java:126)
Completed
The reason according to my analysis is the fact that the Last Changed Rev is stored instead of the Revision. The Last Changed Rev is created before step 2 above, i.e. it fails because the url http://svn/repos/branches/develop/mybranch does not exist in this revision.
This has also been identified in this discussion:
http://jenkins.361315.n4.nabble.com/problem-in-svn-tag-plugin-or-how-hudson-creates-revision-txt-td2965746.html
I think I have found a solution to the error, but since I am not an expert in the code, my changes might very well cause unexpected behaviour in other places. I have tested the original error, and my changes fix these. I have also tested the changes by triggering a build that makes a very long checkout. During the checkout I did a lot of changes in the repo. The plugin still reports the correct revision.
Below is my suggested change, in the form of a svn diff on https://svn.jenkins-ci.org/trunk/hudson/plugins/subversion@38816. Hopefully this is something you can use!
Index: src/main/java/hudson/scm/SubversionSCM.java
===================================================================
— src/main/java/hudson/scm/SubversionSCM.java (revision 38816)
+++ src/main/java/hudson/scm/SubversionSCM.java (working copy)
@@ -787,7 +787,7 @@
}
public SvnInfo(SVNInfo info)
{ - this( info.getURL().toDecodedString(), info.getCommittedRevision().getNumber() ); + this( info.getURL().toDecodedString(), info.getRevision().getNumber() ); }public SVNURL getSVNURL() throws SVNException {