From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 65777 invoked by alias); 29 Dec 2019 13:26:56 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 65768 invoked by uid 89); 29 Dec 2019 13:26:56 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=experiment, bigger, ratio, seriously X-HELO: gate.crashing.org Received: from gate.crashing.org (HELO gate.crashing.org) (63.228.1.57) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Dec 2019 13:26:54 +0000 Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id xBTDQomY020214; Sun, 29 Dec 2019 07:26:50 -0600 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id xBTDQntX020213; Sun, 29 Dec 2019 07:26:49 -0600 Date: Sun, 29 Dec 2019 13:26:00 -0000 From: Segher Boessenkool To: "Julien '_FrnchFrgg_' RIVAUD" Cc: gcc@gcc.gnu.org Subject: Re: Proposal for the transition timetable for the move to GIT Message-ID: <20191229132649.GC3191@gate.crashing.org> References: <20191226183553.GK10088@tucnak> <20191228121921.GW4505@gate.crashing.org> <20191228202824.GZ4505@gate.crashing.org> <20191229104100.GA3191@gate.crashing.org> <98729b61-2322-4244-7bde-f29c7e654d59@free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <98729b61-2322-4244-7bde-f29c7e654d59@free.fr> User-Agent: Mutt/1.4.2.3i X-IsSubscribed: yes X-SW-Source: 2019-12/txt/msg00501.txt.bz2 Hi! On Sun, Dec 29, 2019 at 12:42:07PM +0100, Julien '_FrnchFrgg_' RIVAUD wrote: > I'm not arguing that you should go that route, it seems a bit extreme to > me. But outright refusing merges on the basis they are painful is (if > you can accept the strong word) ludicrous. They are painful for everyone working with the history later. Something that we do in GCC more often than in most other projects. > >Merging is appropriate if there is parallel development of (mostly) > >independent things. > > Which is almost always the case. Which is almost *never* the case for GCC, in my opinion. Almost all commits are smallish improvements / bugfixes. And most bigger things are not independent enough -- we require the resulting thing to be (regression) tested before pushing it upstream, and that is because often that *does* find problems! > >Features aren't that, usually: they can be rebased easily, and they should > >be posted > >for review anyway. > How often successive features checked into GCC are dependent on each > other ? Almost always, one way or the other. It's not just the GCC code itself you have to consider here, there things are easily independent enough, but looking at the code generated by GCC often shows unexpected interactions. > The fact that they can be rebased either way and easily is > almost a testimony of that. And the fact that they need review has > nothing to do with anything. Every patch should normally be posted to the mailing lists for review. Such patches should be against trunk. And *that* patch will be approved, so *that* is the one you will commit and push upstream eventually. Those are the procedures we currently have, and it is necessary to keep the tree even somewhat working most of the time. Too often the tree is broken for days on end :-( > >It is very easy to use merges more often than is useful, and it hurts. > > And it is very easy to use SVN-like workflows, and it hurts far more. > SVN, due to its centrality and inherent impossibility to encode logical > relationships between changes (as opposed to time-based evolution), > slowly impaired most developers mind openness about what can be done in > a worthwhile VCS. Moving to git is an opportunity to at last free > yourselves, not continue that narrow treading on SVN paths. We cannot waste a year on a social experiment. We can slowly and carefully adopt new procedures, certainly. But anything drastic isn't advisable imo. Also, many GCC developers aren't familiar with Git at all. It takes time to learn it, and to learn new ways of working. Small steps are needed. > SVN was like an almanac listing successive events without any analysis. > That's not History (as in the field of study). Git at least can let you > express and use to your common benefit logical links between > modifications. Don't miss that train. I think you seriously overestimate how much information content is in a merge (esp. as applied to the GCC context). Let's start with using good commit messages (or actual commit messages *at all*), that has a much better pain/gain ratio. > Merges are not scary when the tools are good. Even the logs are totally > usable with a lot of merges, with suitable tools. The tool has to adapt, > not you. Merges aren't scary. Merges are inconvenient. And yes, there is no way that all of us will change on a non-geological time scale. Segher