Re: Updated Issue 209 - support drop/modified conflict

Stephen Leake <[email protected]>
Newsgroups gmane.comp.version-control.monotone.devel
Message-ID <[email protected]>
Hendrik Boom <[email protected]> writes:

> Here we're discussing seriously the case I wondered about ages ago, 
> where you want to split a project into several projects, but later 
> decide to bring them back together.  You have the problen of decidint=g 
> which files to merge, and which files have more-or-less become different 
> files, both of which need to be kept.

But you only do that once; we're discussing a case where the conflict
can reoccur on many occasions as the project moves forward (the upstream
vs local case).

> What'd the overhead for deleted files now?  

none.

> With the problematical merges we're discuccing, we have to have some
> mechanism in place to discover that a deletion has been performed in
> the distant past on one of the nerging branches. Presumably that
> implementation mechanism would suffice -- the file doesn't need to be
> mentioned in the manifest for us to implement this model.

This is addressed in the sutures branch. The required information is
stored in the mark/merge cache, not in the revs themselves (the revs do
store the immediate parents of a suture). So it's still 'overhead', but
I'm not sure how much that matters.

>> Complicating things, I don't think it's a file specific decision. Maybe
>> there exist use cases where you want to ignore modifications from the
>> parent project, but at least want to see a warning, or even better a
>> real conflict, if somebody else from your project tried to modify the
>> file "before" seeing your deletion.
>
> It can even be a line-by-line decision.  You deleted this line on branch 
> A, but modified it on branch B.  It's a conflict.  What do you want?  Is 
> this really any different from the case with files?

Yikes. Let's not go there ...

> This whole discussion relates to the user-interface for merges.  
>
> When I'm faced with a merge, I'd sometimes like to be able to say, "Hey, 
> wait a minute, this takes serious thought.  Could you please put all 
> this stuff in my workspace without doing the merge, so I can pull out my 
> whole development toolkit ans work out what has to be done?"  

You can do that now; check out both heads in independent workspaces,
and use your dev kit to compare changes and merge into one final
workspace, then commit that.

The mtn conflict process is a compromise on that; it makes all the
required information (rev ids, file ids) available, so a decent
front-end tool can help in the process, with only one workspace checked
out. See Emacs DVC.

> I'd sometimes even like the possibility of doing the merge a bit at a 
> time, each time reporting progress to monotone until it's finally
> done.

If that's because there are multiple revisions on each side, then zipper
merge (merging each pair of revisions, rather than just the heads) is a
good approach.

If it's because there are lots of files, the current 'mtn conflicts'
commands give you that.

-- 
-- Stephe
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.