[PATCH 4 of 4 mergedriver] filemerge: default change/delete conflicts to 'leave unresolved' (BC)

Augie Fackler raf at durin42.com
Thu Dec 31 10:46:46 CST 2015


On Wed, Dec 23, 2015 at 12:54:02PM -0800, Siddharth Agarwal wrote:
> # HG changeset patch
> # User Siddharth Agarwal <sid0 at fb.com>
> # Date 1450903905 28800
> #      Wed Dec 23 12:51:45 2015 -0800
> # Node ID 1059f0e46c9c1d1d88ce80bbbd7b8acb959e10e1
> # Parent  1a9f3945bca494f92ae7e94bf5d6becf519e0c69
> # Available At http://42.netv6.net/sid0-wip/hg/
> #              hg pull http://42.netv6.net/sid0-wip/hg/ -r 1059f0e46c9c
> filemerge: default change/delete conflicts to 'leave unresolved' (BC)

I'm a big fan. The old behavior is actually surprising to me, and I'm
probably the author of at least one such buggy script.

>
> It makes far more sense to leave these conflicts unresolved and kick back to
> the user than to just assume that the local version be chosen. There are almost
> certainly buggy scripts and applications using Mercurial in the wild that do
> merges or rebases non-interactively, and then assume that if the operation
> succeeded there's nothing the user needs to pay attention to.
>
> (This wasn't possible earlier because there was no way to re-resolve
> change/delete conflicts -- but now it is.)
>
> diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
> --- a/mercurial/filemerge.py
> +++ b/mercurial/filemerge.py
> @@ -240,14 +240,14 @@ def _iprompt(repo, mynode, orig, fcd, fc
>              index = ui.promptchoice(
>                  _("local changed %s which remote deleted\n"
>                    "use (c)hanged version, (d)elete, or leave (u)nresolved?"
> -                  "$$ &Changed $$ &Delete $$ &Unresolved") % fd, 0)
> +                  "$$ &Changed $$ &Delete $$ &Unresolved") % fd, 2)
>              choice = ['local', 'other', 'unresolved'][index]
>          elif fcd.isabsent():
>              index = ui.promptchoice(
>                  _("remote changed %s which local deleted\n"
>                    "use (c)hanged version, leave (d)eleted, or "
>                    "leave (u)nresolved?"
> -                  "$$ &Changed $$ &Deleted $$ &Unresolved") % fd, 0)
> +                  "$$ &Changed $$ &Deleted $$ &Unresolved") % fd, 2)
>              choice = ['other', 'local', 'unresolved'][index]
>          else:
>              index = ui.promptchoice(
> diff --git a/tests/test-merge-changedelete.t b/tests/test-merge-changedelete.t
> --- a/tests/test-merge-changedelete.t
> +++ b/tests/test-merge-changedelete.t
> @@ -55,12 +55,12 @@ Non-interactive merge:
>
>    $ hg merge -y
>    local changed file1 which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed file2 which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging file3
>    warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
> -  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
> +  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
>    use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    [1]
>
> @@ -70,18 +70,18 @@ Non-interactive merge:
>    M file3
>    C file1
>    --- resolve --list ---
> -  R file1
> -  R file2
> +  U file1
> +  U file2
>    U file3
>    --- debugmergestate ---
>    * version 2 records
>    local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
>    other: 10f9a0a634e82080907e62f075ab119cbc565ea6
> -  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
> +  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
>      local path: file1 (flags "")
>      ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
>      other path: file1 (node null)
> -  file: file2 (record type "C", state "r", hash null)
> +  file: file2 (record type "C", state "u", hash null)
>      local path: file2 (flags "")
>      ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
>      other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
> @@ -470,12 +470,12 @@ Force prompts
>
>    $ hg merge --tool :prompt
>    local changed file1 which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed file2 which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    no tool found to merge file3
>    keep (l)ocal, take (o)ther, or leave (u)nresolved? u
> -  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
> +  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
>    use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    [1]
>    $ status
> @@ -484,18 +484,18 @@ Force prompts
>    M file3
>    C file1
>    --- resolve --list ---
> -  R file1
> -  R file2
> +  U file1
> +  U file2
>    U file3
>    --- debugmergestate ---
>    * version 2 records
>    local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
>    other: 10f9a0a634e82080907e62f075ab119cbc565ea6
> -  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
> +  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
>      local path: file1 (flags "")
>      ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
>      other path: file1 (node null)
> -  file: file2 (record type "C", state "r", hash null)
> +  file: file2 (record type "C", state "u", hash null)
>      local path: file2 (flags "")
>      ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
>      other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
> @@ -520,12 +520,12 @@ Choose to merge all files
>
>    $ hg merge --tool :merge3
>    local changed file1 which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed file2 which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging file3
>    warning: conflicts while merging file3! (edit, then use 'hg resolve --mark')
> -  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
> +  0 files updated, 0 files merged, 0 files removed, 3 files unresolved
>    use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    [1]
>    $ status
> @@ -534,18 +534,18 @@ Choose to merge all files
>    M file3
>    C file1
>    --- resolve --list ---
> -  R file1
> -  R file2
> +  U file1
> +  U file2
>    U file3
>    --- debugmergestate ---
>    * version 2 records
>    local: 13910f48cf7bdb2a0ba6e24b4900e4fdd5739dd4
>    other: 10f9a0a634e82080907e62f075ab119cbc565ea6
> -  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
> +  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
>      local path: file1 (flags "")
>      ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
>      other path: file1 (node null)
> -  file: file2 (record type "C", state "r", hash null)
> +  file: file2 (record type "C", state "u", hash null)
>      local path: file2 (flags "")
>      ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
>      other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
> @@ -679,27 +679,29 @@ Non-interactive linear update
>    $ hg rm file2
>    $ hg update 1 -y
>    local changed file1 which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed file2 which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> -  1 files updated, 2 files merged, 0 files removed, 0 files unresolved
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
> +  1 files updated, 0 files merged, 0 files removed, 2 files unresolved
> +  use 'hg resolve' to retry unresolved file merges
> +  [1]
>    $ status
>    --- status ---
>    A file1
>    C file2
>    C file3
>    --- resolve --list ---
> -  R file1
> -  R file2
> +  U file1
> +  U file2
>    --- debugmergestate ---
>    * version 2 records
>    local: ab57bf49aa276a22d35a473592d4c34b5abc3eff
>    other: 10f9a0a634e82080907e62f075ab119cbc565ea6
> -  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
> +  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
>      local path: file1 (flags "")
>      ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
>      other path: file1 (node null)
> -  file: file2 (record type "C", state "r", hash null)
> +  file: file2 (record type "C", state "u", hash null)
>      local path: file2 (flags "")
>      ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
>      other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
> @@ -878,27 +880,29 @@ Choose to merge all files
>    $ hg rm file2
>    $ hg update 1 --tool :merge3
>    local changed file1 which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed file2 which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> -  1 files updated, 2 files merged, 0 files removed, 0 files unresolved
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
> +  1 files updated, 0 files merged, 0 files removed, 2 files unresolved
> +  use 'hg resolve' to retry unresolved file merges
> +  [1]
>    $ status
>    --- status ---
>    A file1
>    C file2
>    C file3
>    --- resolve --list ---
> -  R file1
> -  R file2
> +  U file1
> +  U file2
>    --- debugmergestate ---
>    * version 2 records
>    local: ab57bf49aa276a22d35a473592d4c34b5abc3eff
>    other: 10f9a0a634e82080907e62f075ab119cbc565ea6
> -  file: file1 (record type "C", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
> +  file: file1 (record type "C", state "u", hash 60b27f004e454aca81b0480209cce5081ec52390)
>      local path: file1 (flags "")
>      ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be)
>      other path: file1 (node null)
> -  file: file2 (record type "C", state "r", hash null)
> +  file: file2 (record type "C", state "u", hash null)
>      local path: file2 (flags "")
>      ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e)
>      other path: file2 (node e7c1328648519852e723de86c0c0525acd779257)
> diff --git a/tests/test-merge-force.t b/tests/test-merge-force.t
> --- a/tests/test-merge-force.t
> +++ b/tests/test-merge-force.t
> @@ -143,55 +143,55 @@ Merge with remote
>
>    $ hg merge -f --tool internal:merge3 'desc("remote")'
>    local changed content1_missing_content1_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_content3_content3-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_content3_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_missing_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    remote changed content1_content2_content1_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_content3-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content1_content4-tracked
>    merging content1_content2_content2_content1-tracked
>    merging content1_content2_content2_content4-tracked
> @@ -215,7 +215,7 @@ Merge with remote
>    warning: conflicts while merging missing_content2_content3_content4-tracked! (edit, then use 'hg resolve --mark')
>    warning: conflicts while merging missing_content2_missing_content4-tracked! (edit, then use 'hg resolve --mark')
>    warning: conflicts while merging missing_content2_missing_content4-untracked! (edit, then use 'hg resolve --mark')
> -  18 files updated, 28 files merged, 8 files removed, 10 files unresolved
> +  18 files updated, 3 files merged, 8 files removed, 35 files unresolved
>    use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    [1]
>
> @@ -227,39 +227,39 @@ Interestingly, one untracked file got me
>  odd 'if force and branchmerge and different' case in manifestmerge().
>
>    $ hg resolve -l
> -  R content1_content2_content1_content1-untracked
> -  R content1_content2_content1_content2-untracked
> +  U content1_content2_content1_content1-untracked
> +  U content1_content2_content1_content2-untracked
>    U content1_content2_content1_content4-tracked
> -  R content1_content2_content1_content4-untracked
> -  R content1_content2_content1_missing-tracked
> -  R content1_content2_content1_missing-untracked
> +  U content1_content2_content1_content4-untracked
> +  U content1_content2_content1_missing-tracked
> +  U content1_content2_content1_missing-untracked
>    R content1_content2_content2_content1-tracked
> -  R content1_content2_content2_content1-untracked
> -  R content1_content2_content2_content2-untracked
> +  U content1_content2_content2_content1-untracked
> +  U content1_content2_content2_content2-untracked
>    U content1_content2_content2_content4-tracked
> -  R content1_content2_content2_content4-untracked
> -  R content1_content2_content2_missing-tracked
> -  R content1_content2_content2_missing-untracked
> +  U content1_content2_content2_content4-untracked
> +  U content1_content2_content2_missing-tracked
> +  U content1_content2_content2_missing-untracked
>    R content1_content2_content3_content1-tracked
> -  R content1_content2_content3_content1-untracked
> -  R content1_content2_content3_content2-untracked
> +  U content1_content2_content3_content1-untracked
> +  U content1_content2_content3_content2-untracked
>    U content1_content2_content3_content3-tracked
> -  R content1_content2_content3_content3-untracked
> +  U content1_content2_content3_content3-untracked
>    U content1_content2_content3_content4-tracked
> -  R content1_content2_content3_content4-untracked
> -  R content1_content2_content3_missing-tracked
> -  R content1_content2_content3_missing-untracked
> +  U content1_content2_content3_content4-untracked
> +  U content1_content2_content3_missing-tracked
> +  U content1_content2_content3_missing-untracked
>    R content1_content2_missing_content1-tracked
> -  R content1_content2_missing_content1-untracked
> -  R content1_content2_missing_content2-untracked
> +  U content1_content2_missing_content1-untracked
> +  U content1_content2_missing_content2-untracked
>    U content1_content2_missing_content4-tracked
> -  R content1_content2_missing_content4-untracked
> -  R content1_content2_missing_missing-tracked
> -  R content1_content2_missing_missing-untracked
> -  R content1_missing_content1_content4-tracked
> -  R content1_missing_content3_content3-tracked
> -  R content1_missing_content3_content4-tracked
> -  R content1_missing_missing_content4-tracked
> +  U content1_content2_missing_content4-untracked
> +  U content1_content2_missing_missing-tracked
> +  U content1_content2_missing_missing-untracked
> +  U content1_missing_content1_content4-tracked
> +  U content1_missing_content3_content3-tracked
> +  U content1_missing_content3_content4-tracked
> +  U content1_missing_missing_content4-tracked
>    U missing_content2_content2_content4-tracked
>    U missing_content2_content3_content3-tracked
>    U missing_content2_content3_content4-tracked
> @@ -705,63 +705,63 @@ Re-resolve and check status
>    $ hg resolve --unmark --all
>    $ hg resolve --all --tool internal:merge3
>    remote changed content1_content2_content1_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content1_content4-tracked
>    remote changed content1_content2_content1_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content1_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content2_content1-tracked
>    remote changed content1_content2_content2_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content2_content4-tracked
>    remote changed content1_content2_content2_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content2_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content3_content1-tracked
>    remote changed content1_content2_content3_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content3_content3-tracked
>    remote changed content1_content2_content3_content3-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_content3_content4-tracked
>    remote changed content1_content2_content3_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_content3_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_missing_content1-tracked
>    remote changed content1_content2_missing_content1-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_content2-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging content1_content2_missing_content4-tracked
>    remote changed content1_content2_missing_content4-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_missing-tracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    remote changed content1_content2_missing_missing-untracked which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    local changed content1_missing_content1_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_content3_content3-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_content3_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    local changed content1_missing_missing_content4-tracked which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>    merging missing_content2_content2_content4-tracked
>    merging missing_content2_content3_content3-tracked
>    merging missing_content2_content3_content4-tracked
> diff --git a/tests/test-merge-remove.t b/tests/test-merge-remove.t
> --- a/tests/test-merge-remove.t
> +++ b/tests/test-merge-remove.t
> @@ -103,10 +103,11 @@ Those who use force will lose
>
>    $ hg merge -f
>    remote changed bar which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>    merging foo1 and foo to foo1
> -  0 files updated, 2 files merged, 0 files removed, 0 files unresolved
> -  (branch merge, don't forget to commit)
> +  0 files updated, 1 files merged, 0 files removed, 1 files unresolved
> +  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
> +  [1]
>    $ cat bar
>    bleh
>    $ hg st
> diff --git a/tests/test-rename-merge2.t b/tests/test-rename-merge2.t
> --- a/tests/test-rename-merge2.t
> +++ b/tests/test-rename-merge2.t
> @@ -684,7 +684,7 @@ m "um a c" "um x c" "      " "10 do merg
>     a: prompt deleted/changed -> m (premerge)
>    picked tool ':prompt' for a (binary False symlink False changedelete True)
>    remote changed a which local deleted
> -  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? c
> +  use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
>     b: both created -> m (premerge)
>    picked tool 'python ../merge' for b (binary False symlink False changedelete False)
>    merging b
> @@ -703,11 +703,12 @@ m "um a c" "um x c" "      " "10 do merg
>    my rev at 02963e448370+ other rev at 8dbce441892a ancestor rev at 924404dff337
>    launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
>    merge tool returned: 0
> -  0 files updated, 3 files merged, 0 files removed, 0 files unresolved
> -  (branch merge, don't forget to commit)
> +  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
> +  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    --------------
>    M a
>    M b
> +  abort: unresolved merge conflicts (see "hg help resolve")
>    --------------
>
>    $ tm "up a b" "nm a b" "      " "19 merge b no ancestor, prompt remove a"
> @@ -727,7 +728,7 @@ m "um a c" "um x c" "      " "10 do merg
>     a: prompt changed/deleted -> m (premerge)
>    picked tool ':prompt' for a (binary False symlink False changedelete True)
>    local changed a which remote deleted
> -  use (c)hanged version, (d)elete, or leave (u)nresolved? c
> +  use (c)hanged version, (d)elete, or leave (u)nresolved? u
>     b: both created -> m (premerge)
>    picked tool 'python ../merge' for b (binary False symlink False changedelete False)
>    merging b
> @@ -746,11 +747,12 @@ m "um a c" "um x c" "      " "10 do merg
>    my rev at 0b76e65c8289+ other rev at bdb19105162a ancestor rev at 924404dff337
>    launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
>    merge tool returned: 0
> -  0 files updated, 3 files merged, 0 files removed, 0 files unresolved
> -  (branch merge, don't forget to commit)
> +  0 files updated, 2 files merged, 0 files removed, 1 files unresolved
> +  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
>    --------------
>    M b
>    C a
> +  abort: unresolved merge conflicts (see "hg help resolve")
>    --------------
>
>    $ tm "up a  " "um a b" "      " "20 merge a and b to b, remove a"
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list