Ben Reser wrote on Thu, Aug 08, 2013 at 00:58:50 -0700: > On Wed, Aug 7, 2013 at 3:49 AM, Justin Erenkrantz <jus...@erenkrantz.com> > wrote: > > I'm okay with choice 3 - however, the "release a signed .diff" should also > > include a full release - including whatever normal things we include with a > > standard release process. If 1.8.(x+1) is *only* available as a diff > > against 1.8.x, that makes it hard for downstream users (or packagers) until > > 1.8.(x+2) is released. -- justin > > Not having tarballs is a huge problem since our most reliable > packagers just release the latest version and don't put out patches. >
I'm not opposed to this. I didn't suggest it since I remembered there were objections to "secret tarballs" last time we discussed that option. Naturally, if there are packagers in the audience who would not have a problem with releasing, say, 1.8.3 as "1.8.2 + signed unidiff", please raise your hand. (Note that 'svn patch' is available on windows to apply the unidiff.) > (v4) > - Receive report > - Come up with a fix > - Have a private section of our tree that is always hidden and doesn't > announce commits on public lists/svnpubsub. Create branches there to > commit the work and handle the release branch from there. ... > It probably will take some adjustment to some of the tools to support > this I don't think svnpubsub and the emailer can ignore subtrees and > we might want to make backport.pl capable of handling some of the > merging for us. But none of this seems particularly difficult to me. +1. Presuming "hidden branches" are a given, what you describe sounds reasonable. As to how to implement those: Infra is operating on the assumption that /repos/asf is entirely world readable. That repository currently has authz but infra would like to eliminate that some day (and instead have just "[/] *=r @all-committers=rw", just like we have). We also publish monthly dump files of /repos/asf which are unfiltered (contain all history). It is not technically impossible to change this, of course, but we would need to talk to infra beforehand. I don't think there is an easy out here. Either infra stop assuming that /repos/asf is world readable, or we have to do some of our development outside of /repos/asf. That might mean in some other svn repository --- either create a branch of 1.8.x in another repository (and then we can use cross-repository merging to bring it back to the public area), or store unidiffs in the private repository and version those. Perhaps just "cross-repository branching" would work? That is: (v5) - Receive report - Come up with a fix - Import /repos/asf/subversion/branches/1.8.x@HEAD without history to /repos/private/pmc/subversion/shadow/branches/1.8.y - Backport to the hidden branches and use the STATUS files there to vote. - Tag and roll 1.8.(x+1) off the hidden branch (as in Ben's v4) - Place dist files on password protected website for votes and pre-notifications. - In parallel: + Gather release votes + Send pre-notifications - In parallel: + Merge back to publicly visible branches. Use cross-repository merging ('svn merge /repos/private/pmc/.../1.8.y@{r42,r142} wc-of-1.8.x + Release + announce publicly. This also introduces a naming convention "1.8.y" for the private/shadow clone of 1.8.x. For completeness, annother option would be to do the work in a private fossil/bzr/hg/git repository. That way we'll have history (eg, 'svn blame' will work on 1.8.y) and infra's "/repos/asf is world readable" invariant will be preserved. It would also mean that we aren't entirely self-hosted and that our tools and scripts won't be trivially portable (not just a matter of URL change). So, to summarize, our options for working on the "secret" tree are: (a) - Unidiffs in /repos/private/pmc/subversion (b) - Branch in /repos/asf/subversion/shadow (c) - Branch in /repos/private/pmc/subversion/shadow (d) - Branch in fossil/bzr/hg/git (e) - (We could ask infra to 'zfs clone' the asf repository and make available a /repos/asf-clone which is not world readable --- i.e., fork the 'asf' repository itself [and use cross-repository merge like (b)] --- but I can hear the objections already.) > The only hole left is we need to place tarballs on the dist site 24 > hours in advance to mirror. However, I think we can simply workaround > this issue for serious security issues by shortening that window and > using the update flag on the download page. +1. Our release artifacts are just 7MB: other projects have artifacts of 100MB or more (per tarball), so I think we can afford to be lenient on using the "updated since?" flag.