From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23310 invoked by alias); 29 Oct 2007 18:38:16 -0000 Received: (qmail 23296 invoked by uid 22791); 29 Oct 2007 18:38:15 -0000 X-Spam-Check-By: sourceware.org Received: from mtagate1.de.ibm.com (HELO mtagate1.de.ibm.com) (195.212.29.150) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 29 Oct 2007 18:38:09 +0000 Received: from d12nrmr1607.megacenter.de.ibm.com (d12nrmr1607.megacenter.de.ibm.com [9.149.167.49]) by mtagate1.de.ibm.com (8.13.8/8.13.8) with ESMTP id l9TIc6RL087230 for ; Mon, 29 Oct 2007 18:38:06 GMT Received: from d12av02.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1607.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v8.5) with ESMTP id l9TIc6iw2039840 for ; Mon, 29 Oct 2007 19:38:06 +0100 Received: from d12av02.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l9TIc6Z8020535 for ; Mon, 29 Oct 2007 19:38:06 +0100 Received: from tuxmaker.boeblingen.de.ibm.com (tuxmaker.boeblingen.de.ibm.com [9.152.85.9]) by d12av02.megacenter.de.ibm.com (8.12.11.20060308/8.12.11) with SMTP id l9TIc6gc020532; Mon, 29 Oct 2007 19:38:06 +0100 Message-Id: <200710291838.l9TIc6gc020532@d12av02.megacenter.de.ibm.com> Received: by tuxmaker.boeblingen.de.ibm.com (sSMTP sendmail emulation); Mon, 29 Oct 2007 19:38:05 +0100 Subject: Re: Managing long patch series To: jimb@codesourcery.com (Jim Blandy) Date: Mon, 29 Oct 2007 18:59:00 -0000 From: "Ulrich Weigand" Cc: gdb-patches@sourceware.org In-Reply-To: from "Jim Blandy" at Oct 26, 2007 11:51:02 AM X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-10/txt/msg00765.txt.bz2 Jim Blandy wrote: > Ulrich, I'm curious what techniques you use to manage these long > strings of patches. Specifically, I was wondering: > > - I'm usually working from a fully-patched tree, and then breaking it > up into digestible pieces for submission. If you are working this > way as well, do you have a nice way to ensure the decomposed patch > series remains equivalent to your fully-patched tree? > > - Often I find I need to revise an earlier patch in the series, but > that chance may affect later patches. Do you have a nice way to > handle this? > > Or is it all just "blood, sweat, and tears"? In the software world, > that approach usually results in "mistakes", but you and your fellow > IBM GDB hackers seem to do well. I'm handling this manually. Usually, I have two trees: one vanilla check-out at a particular stage, and one "work tree" that started out as a copy of the vanilla tree with my changes added. To re-base a patch set to mainline changes, or to some change in an earlier patch in the series, I'll typically go back to making the work tree a fresh copy of the vanilla tree, apply the first patch, resolve any conflicts, re-diff against the vanilla tree to get a new 'clean' version of the patch, apply the clean patch to the vanilla tree, then apply the second patch to the work tree and so on. (After the refresh is complete, I revert the whole series from the "vanilla" tree again, and verify that "cvs diff" is back to empty.) I try to break changes out into separate patches earlier rather than later if possible, but of course on occasion I still break up a big changeset into multiple smaller ones. To make sure the broken-out patches still combine back into the original on, I'd typically compare the work tree after applying the small patch series against the vanilla tree with the old big patch applied. > I've tried using quilt, but if one doesn't keep very careful track of > what's going on things can get very tangled. The Emacs mode helped > somewhat, but had other flaws, so I set it aside. I understand that quilt employs a method that is similar to the manual approach I'm currently using, so if I were to use some tool, quilt would probably be it. (However, I'm a vi person, so I have no opinion either way on the Emacs quilt mode ...) > I've been tempted to try using Mercurial for this. I've never used that, sorry. Bye, Ulrich -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com