A smarter mergemaster
Yar Tikhiy
yar at comp.chem.msu.su
Fri Sep 30 08:01:15 PDT 2005
On Fri, Sep 30, 2005 at 09:07:16AM -0400, John Baldwin wrote:
> On Friday 30 September 2005 07:08 am, Yar Tikhiy wrote:
> > [Replying to everyone who mentioned etcmerge or 3-way merge in general]
> >
> > On Fri, Sep 30, 2005 at 12:15:59AM -0700, Jon Dama wrote:
> > > It is worth while to mention sysutils/etcmerge.
> > >
> > > Having the "three-way" merge makes the process much better. The primary
> > > way I've shot myself with mergemaster is forgetting some local change.
> > >
> > > Being able to distinguish the class of things that are changing upstream
> > > really helps the situation and provides a more reasonable indication of
> > > the default:
> > > if it changed upstream but not locally => default is install
> > > if it changed locally but not upstream => default is keep
> > > if it changed locally and upstream => default is merge
> >
> > Obviously, in order to do a 3-way merge, we need information about
> > the old versions of original files as well. However, currently we
> > have only the new versions in /usr/src and local versions in /etc
> > for mergemaster to work with. I'll be glad to hear how etcmerge
> > approaches this issue.
> >
> > In any case, we cannot offer the users to access the CVS repo when
> > merging /etc. Personally, I'd like to see a complete copy of current
> > unmodified /etc files installed to /usr/share/examples/etc. They
> > could serve as the old original versions for the 3-way merge then.
> > Alas, now the copy installed there is rather incomplete, motivation
> > of which is unknown to me yet. Any ideas?
>
> I do the equivalent of etcmerge (sort of) by hand using some old instructions
> from the handbook (pre-mm). Basically, for each installworld, you do a
> distribute of src/etc into /var/tmp/root-YYMMDD. Then you keep around the
> previous tree and just compare the two previous trees and merge those changes
> into /etc.
I'm curious if we can do this in the stock system using the stock
tools. We could compare /usr/share/examples/etc with the results
of "make distrubution" and merge the changes into /etc. Mergemaster
invokes "make distrubution" anyway, so it just needs relevant
/usr/share/examples/etc to be able to do a 3-way merge. This assumes
that /usr/share/examples/etc is in keeping with /etc, of course,
but the assumption can be verified using RCS Id strings, which
should be the same here and there.
--
Yar
More information about the freebsd-hackers
mailing list