Return-Path: X-Original-To: apmail-cassandra-dev-archive@www.apache.org Delivered-To: apmail-cassandra-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id ECDBF17D48 for ; Thu, 7 May 2015 13:53:49 +0000 (UTC) Received: (qmail 10273 invoked by uid 500); 7 May 2015 13:53:48 -0000 Delivered-To: apmail-cassandra-dev-archive@cassandra.apache.org Received: (qmail 10237 invoked by uid 500); 7 May 2015 13:53:48 -0000 Mailing-List: contact dev-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list dev@cassandra.apache.org Received: (qmail 10221 invoked by uid 99); 7 May 2015 13:53:48 -0000 Received: from Unknown (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 May 2015 13:53:48 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id DEF15C092D for ; Thu, 7 May 2015 13:53:47 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.88 X-Spam-Level: ** X-Spam-Status: No, score=2.88 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd4-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=datastax.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id QuUezSMpdL-v for ; Thu, 7 May 2015 13:53:40 +0000 (UTC) Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 5839523102 for ; Thu, 7 May 2015 13:53:39 +0000 (UTC) Received: by wgiu9 with SMTP id u9so44294286wgi.3 for ; Thu, 07 May 2015 06:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datastax.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=9JEU0BnIF3WdD4h2Ou7CjE73MoXSR1G7RZDr6Yb7H3w=; b=YxBQV1+k5l7T/2atA9MaTHO/d+fLQfTdr9aOoV9x2zcvDOQEfqWST78iDTDqBlWUa9 UbS4zT71eCpagFejn7T1rYFB2hh9N7mWNkjHv97fKyuVK0sP6VKfHM0NmsTtuL29huEb VBO4x7V6WcxBruLpi3sYt93GmJWiKZBgv8XVU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=9JEU0BnIF3WdD4h2Ou7CjE73MoXSR1G7RZDr6Yb7H3w=; b=cbknds5alUW0CkAvlPrdhL2PjbrlL3KFF1FahAw2+q6jN3w8SvgWIF2pGXK5SnDvfs x1qp+L0gcEgqlzZbRuFOUmcgGGEmWmbMLWdl+FTIXm2zJvWKvUND9AziCrzaNzGIJPP3 RqgUfZ5drJdzdvolBGPiQng0wb8htyZ/1fwbqVIJBSxvsr/gAaV23jNxAlX6oohcpGAa WpLrlTqlQGkTMTzKDPYjbivlgVKpHBT8ai8zUJtfhCsWqFQ6bArL2KpDZmh4WBbUry4s 4iNd7T136j/RxMLvlvUCVEDxHnGnQbMGgkJp13++297NlbDqL38+RCHE2SSq5OwRPlP7 XhMw== X-Gm-Message-State: ALoCoQlL10u0PCU8T1mnpZ4VEW0wD8H7OFVP1Z7i4eDkXNyPui9lanTk2kQIombA9hwyfBS6G7Lm MIME-Version: 1.0 X-Received: by 10.181.13.16 with SMTP id eu16mr7127315wid.10.1431006817957; Thu, 07 May 2015 06:53:37 -0700 (PDT) Received: by 10.28.50.66 with HTTP; Thu, 7 May 2015 06:53:37 -0700 (PDT) In-Reply-To: References: Date: Thu, 7 May 2015 08:53:37 -0500 Message-ID: Subject: Re: Staging Branches From: Josh McKenzie To: dev@cassandra.apache.org Cc: Gary Dusbabek Content-Type: multipart/alternative; boundary=f46d043c096e0e46ab05157e3dfe --f46d043c096e0e46ab05157e3dfe Content-Type: text/plain; charset=UTF-8 > > I still think this is overly complicated. We still > need to run CI before we release. So what does this buy us? I second this line of questioning. This sounds like we have a solution looking for a problem; we're not talking about people git cloning our repo and running it in production. On Thu, May 7, 2015 at 8:48 AM, Jake Luciani wrote: > git rebase -i trunk_staging > fix the problem > git rebase --continue > > In this situation, if there was an untested follow on commit wouldn't > you need to force push? > > On Thu, May 7, 2015 at 9:28 AM, Benedict Elliott Smith > wrote: > >> > >> If we do it, we'll end up in weird situations which will be annoying for > >> everyone > > > > > > Such as? I'm not disputing, but if we're to assess the relative > > strengths/weaknesses, we need to have specifics to discuss. > > > > If we do go with this suggestion, we will most likely want to enable a > > shared git rerere cache, so that rebasing is not painful when there are > > future commits. > > > > If instead we go with "repairing" commits, we cannot have a "queue" of > > things to merge up to. Say you have a string of commits waiting for > > approval C1 to C4; you made C1, and it broke something. You introduce C5 > to > > fix it, but the tests are still broken. Did you not really fix it? Or > > perhaps one of C2 to C4 are to blame, but which? And have you > accidentally > > broken *them* with your commit? Who knows. Either way, we definitely > cannot > > fast forward. At the very best we can hope that the new merge did not > > conflict or mess up the other people's C2 to C4 commits, and they have to > > now merge on top. But what if another merge comes in, C6, in the > meantime; > > and C2 really did also break the tests in some way; how do we determine > C2 > > was to blame, and not C6, or C3 or C4? What do the committers for each of > > these do? We end up in a lengthy tussle, and aren't able to commit any of > > these to the mainline until all of them are resolved. Really we have to > > prevent any merges to the staging repository until the mistakes are > fixed. > > Since our races in these scenario are the length of time taken for cassci > > to vet them, these problems are much more likely than current race to > > commit. > > > > In the scheme I propose, in this scenario, the person who broke the build > > rebases everyone's branches to his now fixed commit, and the next broken > > commit gets blamed, and all other commits being merged in on top can go > in > > smoothly. The only pain point I can think of is the multi-branch rebase, > > but this is solved by git rerere. > > > > I agree running tests is painful, but at least for the build, this should > >> be the responsibility of the committer to build before merging > > > > > > Why make the distinction if we're going to have staging commits? It's a > bit > > of a waste of time to run three ant real-clean && ant tasks, and > increases > > the race window for merging (which is painful whether or not involves a > > rebase), and it is not a *typical* occurrence ("alarming" is subjective) > > > > On Thu, May 7, 2015 at 2:12 PM, Sylvain Lebresne > > wrote: > > > >> > If one of them breaks, we go and edit the _staging branch in place to > >> correct > >> > the problem, and let CI run again. > >> > >> I would strongly advise against *in place* edits. If we do it, we'll > end up > >> in > >> weird situations which will be annoying for everyone. Editing commits > that > >> have > >> been shared is almost always a bad idea and that's especially true for > >> branch > >> that will have some amount of concurrency like those staging branches. > >> > >> Even if such problems are rare, better to avoid them in the first place > by > >> simply > >> commit new "fixup" commits as we currently do. Granted this give you a > >> slightly > >> less clean history but to the best of my knowledge, this hasn't been a > pain > >> point so far. > >> > >> > wait for CI; all clear > >> > > >> > git checkout cassandra-2.0; git merge cassandra-2.0_staging > >> > git checkout cassandra-2.1; git merge cassandra-2.1_staging > >> > git checkout trunk; git merge trunk_staging > >> > > >> > This does introduce some extra steps to the merge process > >> > >> If we do this, we should really automate that last part (have the CI > >> environment merge the staging branch to the non-staging ones on > success). > >> > >> > It seems if we want an "always releasable" set of branches, we need > >> something > >> > along these lines. > >> > >> Agreed as far as having staging branches vetoed by CI goes. Less sure > about > >> the edit-commit-in-place part as said above. > >> > >> > I certainly break tests by mistake, or the build itself, with alarming > >> regularity. > >> > >> I agree running tests is painful, but at least for the build, this > should > >> be > >> the responsibility of the committer to build before merging. We all > forget > >> it from > >> times to times and that's ok, but it's not ok if it's "alarmingly > regular". > >> > >> -- > >> Sylvain > >> > > > > -- > http://twitter.com/tjake > -- Joshua McKenzie DataStax -- The Apache Cassandra Company --f46d043c096e0e46ab05157e3dfe--