view tests/test-merge9.t @ 40391:abbd077965c0

wireprotov2: support exposing linknode of file revisions When supporting shallow file storage, clients may fetch file revisions by changeset. But they may not readily know which changeset introduced a specific file revision. The "linknode" is used to record which changeset introduces which file revision. This commit teaches the "filedata" and "filesdata" wire protocol commands to expose the linknode for file revisions. The implementation is likely wrong when hidden changesets are in play, since the linknode may refer to a hidden changeset. We can deal with this problem later. Differential Revision: https://phab.mercurial-scm.org/D5167
author Gregory Szorc <gregory.szorc@gmail.com>
date Fri, 19 Oct 2018 15:38:25 +0200
parents 41ef02ba329b
children 8d72e29ad1e0
line wrap: on
line source

test that we don't interrupt the merge session if
a file-level merge failed

  $ hg init repo
  $ cd repo

  $ echo foo > foo
  $ echo a > bar
  $ hg ci -Am 'add foo'
  adding bar
  adding foo

  $ hg mv foo baz
  $ echo b >> bar
  $ echo quux > quux1
  $ hg ci -Am 'mv foo baz'
  adding quux1

  $ hg up -qC 0
  $ echo >> foo
  $ echo c >> bar
  $ echo quux > quux2
  $ hg ci -Am 'change foo'
  adding quux2
  created new head

test with the rename on the remote side
  $ HGMERGE=false hg merge
  merging bar
  merging foo and baz to baz
  merging bar failed!
  1 files updated, 1 files merged, 0 files removed, 1 files unresolved
  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
  [1]
  $ hg resolve -l
  U bar
  R baz

test with the rename on the local side
  $ hg up -C 1
  3 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ HGMERGE=false hg merge
  merging bar
  merging baz and foo to baz
  merging bar failed!
  1 files updated, 1 files merged, 0 files removed, 1 files unresolved
  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
  [1]

show unresolved
  $ hg resolve -l
  U bar
  R baz

unmark baz
  $ hg resolve -u baz

show
  $ hg resolve -l
  U bar
  U baz
  $ hg st
  M bar
  M baz
  M quux2
  ? bar.orig

re-resolve baz
  $ hg resolve baz
  merging baz and foo to baz

after resolve
  $ hg resolve -l
  U bar
  R baz

resolve all warning
  $ hg resolve
  abort: no files or directories specified
  (use --all to re-merge all unresolved files)
  [255]

resolve all
  $ hg resolve -a
  merging bar
  warning: conflicts while merging bar! (edit, then use 'hg resolve --mark')
  [1]

after
  $ hg resolve -l
  U bar
  R baz

  $ cd ..