HX_unbanned, I demonstrated the bug reproduction steps and testing methodology above, and the fix was submitted and accepted by SVNKit here: http://issues.tmatesoft.com/issue/SVNKIT-368
You can see the commit was made to trunk here: http://svn.svnkit.com/repos/svnkit/trunk/svnkit/src/main/java/org/tmatesoft/svn/core/internal/wc/SVNUpdateEditor15.java And to 1.7.x branch, here: http://svn.svnkit.com/repos/svnkit/branches/1.7.x/svnkit/src/main/java/org/tmatesoft/svn/core/internal/wc/SVNUpdateEditor15.java If you have reservations on the fix, please take a look at this material and let me know which part of it you'd like to discuss. Thank you, Kenny On Monday, May 6, 2013 6:56:21 AM UTC-7, HX_unbanned wrote: > > meeging is good, but NOT SCREWING UP with the consequences this change can > cause I would suggest to do extensive testing. Some bussinesses rely on > this pligins stability... > > > > -- > > > > Sent from my Nokia N9 > > > > On 02/05/2013 10:05 Kenny Ayers wrote: > KK - any word on integrating this pull request? > > On Friday, April 26, 2013 3:48:43 PM UTC-7, Kenny Ayers wrote: >> >> Ah, I see... perhaps I can bribe him with mail-order cookies or beer or >> something... >> >> I'll do a pull request on my change, and see if that gets the ball >> rolling. >> >> Thanks for the replies, >> >> Kenny >> >> On Friday, April 26, 2013 2:45:04 PM UTC-7, Stephen Connolly wrote: >>> >>> The process I usually follow is to beg KK to do the merge pleading that >>> it blew up in my face and there is no way he could do it during his >>> lunchbreak... >>> >>> Though I may be using the "no way you could do that in your lunchbreak" >>> dare a bit too often... he may have wised up to my tricks... perhaps I need >>> to find a new one ;-) >>> >>> >>> On 26 April 2013 22:39, Kenny Ayers <[email protected]> wrote: >>> >>>> Hey Stephen, >>>> >>>> Alexander Kitaev from SVNKit has peer-reviewed this change and has >>>> rolled it into the upstream libraries, and the new binaries are available >>>> here: >>>> http://teamcity.tmatesoft.com/viewLog.html?buildId=6105&tab=artifacts&buildTypeId=bt43( >>>> http://issues.tmatesoft.com/issue/SVNKIT-368#comment=60-4930). I'm >>>> not sure what the process is for getting this updated in the plugin, >>>> please >>>> let me know if there is anything else I can do to help. >>>> >>>> Thank you, >>>> >>>> Kenny >>>> >>>> >>>> On Friday, April 26, 2013 3:04:03 AM UTC-7, Stephen Connolly wrote: >>>> >>>>> Traditionally, the jenkins fork is maintaining a (hopefully) smaller >>>>> set of patches on top of the upstream version. >>>>> >>>>> The aim is to get the set of patches to zero and then drop the fork. >>>>> >>>>> With reference to the above aim, my preference would be to get it in >>>>> upstream rather than add to our current patch set. >>>>> >>>>> It is a real pain trying to update the code from upstream, at least >>>>> every time I have tried I have had to give up and get KK to do it (he has >>>>> some set of magic workspaces or something) so I would just love if we can >>>>> get the need for this fork to disappear completely >>>>> >>>>> -Stephen >>>>> >>>>> >>>>> On 26 April 2013 03:22, Kenny Ayers <[email protected]> wrote: >>>>> >>>>>> Hi folks, >>>>>> >>>>>> *Short Version:* >>>>>> * >>>>>> * >>>>>> I may have a fix for Jenkins-14551 (https://issues.jenkins-ci.** >>>>>> org/browse/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 <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/**27decb28216ee4fd15b8fcbdb769bf* >>>>>> *41d81978eb<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/** >>>>>> 27decb28216ee4fd15b8fcbdb769bf**41d81978eb<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 jenkinsci-de...@**googlegroups.com. >>>>>> >>>>>> For more options, visit >>>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>>> . >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>> 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. >>>> >>>> >>>> >>> >>> -- > 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] <javascript:>. > For more options, visit https://groups.google.com/groups/opt_out. > > > > -- 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.
