Received: from localhost (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 48E41634D81 for ; Sat, 6 Jun 2009 20:03:11 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 76385-02 for ; Sat, 6 Jun 2009 20:03:02 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from shaykin.bluegap.ch (shaykin.bluegap.ch [78.46.81.73]) by mail.postgresql.org (Postfix) with ESMTP id B6B65634C40 for ; Sat, 6 Jun 2009 20:03:08 -0300 (ADT) Received: from [192.168.2.103] (p549768E7.dip.t-dialin.net [::ffff:84.151.104.231]) (AUTH: CRAM-MD5 markus@bluegap.ch) by shaykin.bluegap.ch with esmtp; Sun, 07 Jun 2009 01:03:05 +0200 id 000000000255C01F.000000004A2AF5A9.00004F77 Message-ID: <4A2AF5A9.1050901@bluegap.ch> Date: Sun, 07 Jun 2009 01:03:05 +0200 From: Markus Wanner User-Agent: Mozilla-Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: Tom Lane CC: Andrew Dunstan , Ron Mayer , Marko Kreen , Greg Stark , Andres Freund , Aidan Van Dyk , Heikki Linnakangas , Magnus Hagander , PostgreSQL-development Subject: Re: PostgreSQL Developer meeting minutes up References: <20090526144812.GC15213@yugib.highrise.ca> <20090602162333.369974jcc3jpn3dx@mail.bluegap.ch> <20090602180702.15986cp384yo3l7q@mail.bluegap.ch> <20090603131004.12934iyrr4f7rlsc@mail.bluegap.ch> <4136ffa0906030508i2971790dk54a8203ee03ed196@mail.gmail.com> <4A266A56.2020703@anarazel.de> <4136ffa0906030701x200bf0e4o4c77fa3239062ca5@mail.gmail.com> <20090604114610.808217tbogts0noi@mail.bluegap.ch> <4A283A8D.8030600@cheapcomplexdevices.com> <20090605090514.11712ntlvhi2deay@mail.bluegap.ch> <2871.1244209112@sss.pgh.pa.us> <4A2922E8.1090505@dunslane.net> <4A2A8E16.2090703@bluegap.ch> <4A2A9FB8.4050405@dunslane.net> <11701.1244308956@sss.pgh.pa.us> In-Reply-To: <11701.1244308956@sss.pgh.pa.us> X-Enigmail-Version: 0.95.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200906/538 X-Sequence-Number: 139593 Hi, Tom Lane wrote: > How robust is git about dealing with whitespace changes, > nearby variable renamings, and such? Monotone tracks changes line by line. I'm not sure about git. Kdiff3, which is used to do the manual merge, if necessary, uses some finer grained method, AFAIK. However, there's no special whitespace treatment. Nor anything remotely as clever as "nearby variable renaming". There's no such magic, the developer still needs to tell the tool what he wants. However, I'd argue that monotone (as well as git) do an incredible job at "remembering" these decisions and merges, so you never need to do a manual merge twice. (Which I remember doing a lot with diff/patch, quilt or subversion). > Andrew's plperl patches would be an excellent small test case. Anybody > want to try them against the experimental git repository and see if git > does any better than plain patch? I've given that patch a try under monotone (just because I happen to know that a lot better). The results should be the same as with git. I've started with the patch against 7.4 (which I know doesn't resemble the current workflow, but is sufficient for testing merging capabilities). Merging that to 8.0 worked without any conflicts. Although the result then differed from Andrew's work in that the variable dummy_perl_env is declared after the "#ifdef WIN32" block as opposed to before in 7.4. The addition in the comment ("notably on Windows") of course also didn't appear automatically. It merged from 8.0 to 8.1 without any conflicts, results were equal. Merging from 8.1 to 8.2 resulted in one merge conflict, because of the additional condition ('if (interp_state == INTERP_NONE)') that got added between 8.1 and 8.2. Merging from 8.2 to 8.3 and then to HEAD as well was conflict free again. The results differ in whitespace changes exclusively. So, three out of the five merges would have been equally perfect with automatic merging, while requiring only one single command, which could even be scripted, because it remains the same over time, i.e. for monotone it was something similar to: mtn propagate REL8_0_STABLE REL8_1_STABLE Regards Markus Wanner