Re: PostgreSQL Developer meeting minutes up - Mailing list pgsql-hackers

From Markus Wanner
Subject Re: PostgreSQL Developer meeting minutes up
Date
Msg-id 4A2AF5A9.1050901@bluegap.ch
Whole thread Raw
In response to Re: PostgreSQL Developer meeting minutes up  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: PostgreSQL Developer meeting minutes up  (Nicolas Barbier <nicolas.barbier@gmail.com>)
List pgsql-hackers
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


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Partial vacuum versus pg_class.reltuples
Next
From: Markus Wanner
Date:
Subject: Re: PostgreSQL Developer meeting minutes up