A smarter mergemaster

M. Warner Losh imp at bsdimp.com
Sat Oct 1 14:00:35 PDT 2005


In message: <200510012034.j91KYWPQ064132 at gate.bitblocks.com>
            Bakul Shah <bakul at BitBlocks.com> writes:
: Here is an idea for the mergemaster hackers' consideration!
: 
: By keeping /etc files in a source repository one can archive
: and document all local changes.  This is useful for some of
: the same reasons for which we keep sources in a repo:
: recovery from mistakes, reuse of old code, checking who did
: what, more than one person can make changes, tracking
: history, debugging etc.
: 
: If mergemaster handled or worked with a local cvs /etc repo
: that'd be very nice!  The idea is to make changes and test
: them in a temp workspace and commit them *only if they do the
: right thing*!  I envision a workflow something like this
: (using make for illustration purposes):
: 
: cd <etc workspace>
: make etc-diff	# ensure your workspace reflects what is in /etc
: <if resync is needed, commit them to local repo>
: 
: make import	# import the latest /usr/src/etc into etc workspace
: make diff	# look over the changes
: <make any local repairs>
: make install	# install to /etc; do mkdb etc.
: <check out your changes>
: 
: Finally:
: make commit	# commit changes to local repo
: OR
: make undo	# if things didn't quite work, restore /etc to old state.
: 
: Roughly, the current mergemaster does the work of make
: import, make diff, repairs and install.
: 
: Comments?

I implemented something very similar to this for maintaining all the
etc files at Timing Solutions.  We have a tree that gets installed
over the base OS.

However, it doesn't easily allow for a mergemaster step since it
installs all the files with schg set, and doesn't have three way merge
in potential.

Doing the makefile goo is relatively easy, but the merging was much
harder.

Wanrer



More information about the freebsd-hackers mailing list