From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Subject: Re: [DEV] New git workflow Date: Wed, 21 Mar 2012 01:02:30 +0100 Message-ID: <87haxiddnt.fsf@gnu.org> References: <87mx7cf613.fsf@altern.org> <87fwd3ycsu.fsf@Rainer.invalid> <87ehsnr1w7.fsf@gnu.org> <87haxjkrki.fsf@Rainer.invalid> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:36486) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SA8zO-00064M-4m for emacs-orgmode@gnu.org; Tue, 20 Mar 2012 20:01:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SA8zL-0006QX-AQ for emacs-orgmode@gnu.org; Tue, 20 Mar 2012 20:01:17 -0400 Received: from mail-wg0-f49.google.com ([74.125.82.49]:53305) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SA8zK-0006QG-Tu for emacs-orgmode@gnu.org; Tue, 20 Mar 2012 20:01:15 -0400 Received: by wgbdr1 with SMTP id dr1so265099wgb.30 for ; Tue, 20 Mar 2012 17:01:12 -0700 (PDT) In-Reply-To: <87haxjkrki.fsf@Rainer.invalid> (Achim Gratz's message of "Tue, 20 Mar 2012 20:20:13 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Achim Gratz Cc: emacs-orgmode@gnu.org Hi Achim, Achim Gratz writes: > Fair enough: a three-branch model with a release branch at the side of > bugfixing and bleeding edge. This is directly inspired from this: http://nvie.com/posts/a-successful-git-branching-model/ with some simplifications. >> No. All hotfix branches should merge into master regularily. When >> hotfix contains enough fixes for a bugfix release, then we merge it to >> maint, and process with release. > > This is what I think is confusing: the bugfix branch (be it maint or any > other) should always have the same _unless_ you want to track release > specific bugfixes (which I don't think you do, but you tell me). I mostly want to track wrt-last-Emacs-merge specific bugs. I used the naming convention hotfix-* as suggested above because I like the idea of deleting such a branch once we don't need it anymore (i.e. once a release has been done.) Since hotfix-* role is to contain fixes for severe bugs against the last production version, their lifespan is not much (expect now, while we are testing this workflow, and while the forthcoming Emacs release puts some heat on getting as much bugfixes committed to the next 7.8.07 Org version.) If we keep a persistent maint branch, I guess we will tend to put all bugfixes there -- which I don't want. But which could make sense if those bugfixes are regularily merged back to Emacs trunk. >> My main goal is this: have a branch with one commit = one release. > > Why not name it release then and keep maint for fixes? You could even > install that release branch retro-actively if you want. BTW, this also > means you need to prepare the release on the hotfix branch, no > fier-upper on the release allowed at all (since you would need to merge > that back). Indeed. As for the names, I don't care, I just don't want to change things that are just conventions. > But as I said before, clone the repo, branch off the 7.7 release or so > and re-trace the following releases via cherry-pick according to that > new development model. You will quickly learn if what you have to do > feels right and if you commit to that model you will have practised the > moves a few times already. Good idea. I will try. > Another thing that I'd recommend is to not work on the public repo _at > all_ and specifically never push to it, especially not automatically. > The public repo should be "bare" (without a work tree) and any work on > the server should use a clone of that repo, just like anyone else. Mhh.. something I don't get here: why should we not work on the public repo? This is the repo many people are cloning. > If > you prepare the releases on a fresh clone apart from the development > clone, you have a stable base to work from and can nuke with no > consequences if something goes wrong. (We prepare major releases on the development branch, minor ones on the hotfix-* branch.) > Git was designed to make merges > easier, but they are hard and I still botch about every tenth that I try > unless they are really trivial. Once the release repo is finished, have > it reviewed and then pull from it on the public repo. The reason is > that it is easy to push from the wrong branch onto the wrong target, but > you really have to try to do that when pulling. You can be more liberal > with the normal development and bugfixing work on the development repo, > but it would still be a good idea to have commits reviewed and signed > off by another person before they are pulled into public. Okay, I now understand the problem of pushing from the wrong repo ;) Well, this is a trade-off. If developers are willing to follow these rules, okay. But I don't feel like imposing them to everyone -- especially because paying a little more attention might be enough to avoid the mess I did. Again, thanks for sharing this. Let's continue with the model I suggest and see what is better and what should be fixed. -- Bastien