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