[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PATCH 6/6] implement 'm' option for conffile merging during conflict resolution



hey raphael,

On Tue, Sep 29, 2009 at 08:55:56AM +0200, Raphael Hertzog wrote:
> > this functions by performing a 3-way diff using the new conffile, the
> > currently-installed conffile, and the pristine version of the conffile
> > shipped in the currently installed package (in the conffile database).
> 
> Hum, instead of the "the pristine version of the conffile
> shipped in the currently installed package", in theory it could also be the
> ancestor of the currently installed conffile — that is the pristine version
> of the conffile that last got installed (automatically or by a Y answer to
> the prompt or by a successful merge).

if i understand you correctly:

- pristine packaged conffile stored during unpack
- successfully installed conffiles (Y or post-merge) stored during or
  after configuration
- during conflict resolution, multiple merge paths are tried (or offered?)

is that correct?
  
> Shouldn't that file be kept around as well and used in priority for the
> merge? (In a conffiles-base directory for example)

i suppose it could be useful for a "show me what's changed since the
last conffile conflict/resolution", and cases where the conffile was
further modified after a successful resolution.

it does complicate things a bit though--not so much in implementation
which is fairly straightforward, but more with the installation process
(see below wrt the merge reviewing)

> P: pristine conffile of currently installed package
> N: conffile of the new package to be installed
> I: installed conffile
> B: base conffile (last version successfully installed)
> 
> We could then try:
> - diff(P → N) on top of I
> - or diff(B → I) on top of N

would you suggest that we do the latter first?  should they be seperate
options or something tried in succession as part of a single merge option?

> That way a conffile upgrade skipped due to installations with
> --force-confold can be recovered and the changes merged at the next
> interactive upgrade.

i could be missing something since i'm only passingly familiar with
a few codepaths in dpkg, but i think that we still get the conffiles
into the conffile db even when --force-confold is passed (since the
hook into this is pretty early, during unpack)  i'll see if i can
verify this tonight.

> We also want a --force-confmerge option to try out a merge
> non-interactively before falling back to --force-confold/new.

yeah i think that'd be a nice idea.

> > future implementations can extend this to allow for interactive inspection
> > of failed merges, piping the diff to a pager, or perhaps even alternative
> > diff3 implementations when available.
> 
> I would like to be able to review successful merges as well.

yeah.  the only problem is that it adds an extra step to the installation
process (i.e. an extra prompt) so i figured that this (as well as stuff
like the new suggestions above) should be hammered out in discussion for
exactly how it should work, prompt strings, etc, and also seperate from
the initial implementation.
 
On Tue, Sep 29, 2009 at 08:19:48AM +0200, Raphael Hertzog wrote:
> On Mon, 28 Sep 2009, Sean Finney wrote:
> > +		ohshite(_("unable to stat installed file `%.250s'"), source);
> > +		ohshite(_("unable to change ownership of target file`%.250s'"),
> > +		        target);
> > +		ohshite(_("unable to set mode of target file`%.250s'"), target);
> 
> We move away from the `' quotes when we have to change strings, we use the
> usual ones (''). You lack a space before the quotes.

okay.  i think i copied those verbatim, to avoid fuzzying strings, but
then ended up having to change them anyway since they didn't make sense
in a general context.  i'll fix them up in the next version.

btw, this patch series is sitting at the top of the following location:

	ssh://git.debian.org/git/users/seanius/dpkg.git
	http://git.debian.org/git/users/seanius/dpkg.git

	branch: seanius-conffiledb-20090928

and any future revisions i'll put in a similarly timestamped (and rebased)
branch to keep things clean for further review.


	sean

-- 

Attachment: signature.asc
Description: Digital signature


Reply to: