view tests/test-merge4.t @ 48587:3c8cc987672e

simplemerge: take over formatting of label from `filemerge` The padding we do of conflict labels depends on which conflict marker style is used. For two-way conflict markers (the default), the length of the base label shouldn't matter. It does before this patch, however. This patch moves the formatting from `filemerge` to `simplemerge`. The latter knows which conflict marker style to use, so it can easily decide about the padding. This change will allow us to use more descriptive "base" labels without causing illogical padding in 2-way markers. I'll do that next. One wrinkle is that we pass the same labels to external merge tools. I decided to change that in this patch to be simpler: no padding, and no ellipsis to fit within 80 columns. My reasoning is that the typical external, 3-or-4-panel merge tool doesn't show the labels on top of each others, so the padding doesn't make sense there. The ellipsis is probably not necessary because the external tools probably have their own way of dealing with long labels. Also, we limit them to "80 - 8" to fit the "<<<<<<< " before, which is almost definitely not what an external tool would put there. Differential Revision: https://phab.mercurial-scm.org/D12019
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 20 Jan 2022 11:06:52 -0800
parents fc4fb2f17dd4
children 55c6ebd11cb9
line wrap: on
line source

  $ hg init
  $ echo This is file a1 > a
  $ hg add a
  $ hg commit -m "commit #0"
  $ echo This is file b1 > b
  $ hg add b
  $ hg commit -m "commit #1"
  $ hg update 0
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo This is file c1 > c
  $ hg add c
  $ hg commit -m "commit #2"
  created new head
  $ hg merge 1
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ rm b
  $ echo This is file c22 > c

Test hg behaves when committing with a missing file added by a merge

  $ hg commit -m "commit #3"
  abort: cannot commit merge with missing files
  [255]


Test conflict*() revsets

# Bad usage
  $ hg log -r 'conflictlocal(foo)'
  hg: parse error: conflictlocal takes no arguments
  [10]
  $ hg log -r 'conflictother(foo)'
  hg: parse error: conflictother takes no arguments
  [10]
  $ hg co -C .
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
# No merge parents when not merging
  $ hg log -r 'conflictlocal() + conflictother()'
# No merge parents when there is no conflict
  $ hg merge 1
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg log -r 'conflictlocal() + conflictother()'
  $ hg co -C .
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo conflict > b
  $ hg ci -Aqm 'conflicting change to b'
  $ hg merge 1
  merging b
  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
  [1]
# Shows merge parents when there is a conflict
  $ hg log -r 'conflictlocal()' -T '{rev} {desc}\n'
  3 conflicting change to b
  $ hg log -r 'conflictother()' -T '{rev} {desc}\n'
  1 commit #1