Hi folks,

*Short Version:*
*
*
  I may have a fix for Jenkins-14551 (
https://issues.jenkins-ci.org/browse/JENKINS-14551).  I've submitted this 
potential resolution to SVNKit as well as their 1.7.6 SVN branch has the 
same issue (http://issues.tmatesoft.com/issue/SVNKIT-368).  I've compiled 
the change into the subversion-plugin on my test server, and the fix 
appears to work.

  Can a contributor peer review this change?

  How do I go about submitting this fix to the Jenkins SVNKit repo?  Do I 
need a unit test before I can do a pull request?  The bug is obvious when 
you look at the code, and the unit test setup and execution seems like it 
would be complicated.  I've forked the Jenkins SVNKit repo and committed 
the modification here: 
https://github.com/theotherwhitemeat/svnkit-1/commit/27decb28216ee4fd15b8fcbdb769bf41d81978eb

*Longer Version:*
*
*
  In org.tmatesoft.svn.core.internal.wc.SVNUpdateEditor15.java, in function 
addFileWithHistory (line 867), there's a code block that calls 
myFileFetcher.fetchFile() twice.  Each time this is called, baseTextOS is 
written to.  Upon the second write, the file contents are duplicated. 
Here's the code:


baseTextOS = SVNFileUtil.openFileForWriting(info.copiedBaseText);
myFileFetcher.fetchFile(copyFromPath, copyFromRevision, baseTextOS, 
baseProperties);
SVNChecksumOutputStream checksumBaseTextOS = new 
SVNChecksumOutputStream(baseTextOS, 
SVNChecksumOutputStream.MD5_ALGORITHM, true);
baseTextOS = checksumBaseTextOS;
myFileFetcher.fetchFile(copyFromPath, copyFromRevision, baseTextOS, 
baseProperties);
info.copiedBaseChecksum = checksumBaseTextOS.getDigest();



  I was able to find this by stepping through the code using NetBeans IDE 
7.3 attached to a remote debugging session on Jenkins.  I've compiled and 
tested this change inside the context of the subversion-plugin and the file 
contents are no longer duplicated.

  I've forked the svnkit repo used in Jenkins here, and committed this 
change if anyone would like to download the fix and do some testing:

  
https://github.com/theotherwhitemeat/svnkit-1/commit/27decb28216ee4fd15b8fcbdb769bf41d81978eb

  Here's my patch:

Index: SVNUpdateEditor15.java
===================================================================
--- SVNUpdateEditor15.java (revision 9722)
+++ SVNUpdateEditor15.java (working copy)
@@ -864,7 +864,6 @@
             OutputStream baseTextOS = null;
             try {
                 baseTextOS = 
SVNFileUtil.openFileForWriting(info.copiedBaseText);
-                myFileFetcher.fetchFile(copyFromPath, copyFromRevision, 
baseTextOS, baseProperties);
                 SVNChecksumOutputStream checksumBaseTextOS = new 
SVNChecksumOutputStream(baseTextOS, 
                         SVNChecksumOutputStream.MD5_ALGORITHM, true);
                 baseTextOS = checksumBaseTextOS;

Thank you,

Kenny Ayers

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to