Question about internal:fail

Mike Meyer mwm at mired.org
Thu Dec 1 13:45:45 CST 2011


On Thu, 1 Dec 2011 20:00:56 +0100
Dennis Brakhane <brakhane at googlemail.com> wrote:

> On Thu, Dec 1, 2011 at 3:23 AM, Mike Meyer <mwm at mired.org> wrote:
> > That's not what I want. What I *really* want is a way to use
> > resolves machinery on every file that differs between the two
> > branches. The original idea was to use internal:fail to start
> > that. That was when I discovered that it wasn't called under
> > conditions when I thought it should be. That's why the subject line
> > is about internal:fail.
> 
> Let's review your example:
> 
> fedora% sh -v testcase
> hg init x
> cd x
> echo "Testing" > foo
> hg add foo
> hg ci -m "Initial version"
> echo hello >> foo
> hg ci -m "Branch 1"
> hg up 0
> 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> cp foo foo2
> hg add foo2
> hg ci -m "Branch 2"
> created new head
> hg up 1
> 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> hg merge --tool internal:fail
> 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> (branch merge, don't forget to commit)
> 
> 
> There are really no files that differ, foo2 is a new file to
> hg.

foo2 isn't the issue. foo is the issue. On the Branch 1, it's:

    Testing
    hello

On Branch 2, foo is still just:

    Testing

That sure looks like a file that differs to me! And that's the one I
want to get to with the resolve machinery.

> It doesn't know that [foo2] is a copy of foo.

I don't really care about foo2. The example has to include two files,
as it's about changing a file on just one branch, which means a second
file has to be changed to get the second branch.  Adding a file is the
easy way to do that. Ok, maybe I ought to care about foo2, but
existence or non-existence is a simple enough issue that I don't.

Let's try a different example for the second change that shows why I
want this:


$ hg init x
$ cd x
$ echo bar1 > foo1
$ echo bar2 > foo2
$ cat *
bar1
bar2
$ hg add *
$ hg ci -m "Base version."
$ echo hello >> foo1
$ hg ci -m "Branch 1"
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo hello >> foo2
$ hg ci -m "Branch 2"
created new head
$ hg merge --tool internal:fail
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat *
bar1
hello
bar2
hello

I needed to add "hello". It got added to different files on the two
branches. So both files differ between the branches, I can't use
resolve on either one, and it only told me about one of them changing!
I have to find the other one by hand.

     <mike


More information about the Mercurial mailing list