view tests/test-merge-internal-tools-pattern.t @ 46950:279df499511e

incoming: kill the `repo._subtoppath =` hack We do the same as for `hg outgoing`, instead of relying on implicit passing value by monkey punching them onto the repo object, we pass equivalent information by argument to the proper function. This is way cleaner. Differential Revision: https://phab.mercurial-scm.org/D10416
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 14 Apr 2021 17:41:02 +0200
parents 41ef02ba329b
children 50de08904c63
line wrap: on
line source

Make sure that the internal merge tools (internal:fail, internal:local,
internal:union and internal:other) are used when matched by a
merge-pattern in hgrc

Make sure HGMERGE doesn't interfere with the test:

  $ unset HGMERGE

  $ hg init

Initial file contents:

  $ echo "line 1" > f
  $ echo "line 2" >> f
  $ echo "line 3" >> f
  $ hg ci -Am "revision 0"
  adding f

  $ cat f
  line 1
  line 2
  line 3

Branch 1: editing line 1:

  $ sed 's/line 1/first line/' f > f.new
  $ mv f.new f
  $ hg ci -Am "edited first line"

Branch 2: editing line 3:

  $ hg update 0
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ sed 's/line 3/third line/' f > f.new
  $ mv f.new f
  $ hg ci -Am "edited third line"
  created new head

Merge using internal:fail tool:

  $ echo "[merge-patterns]" > .hg/hgrc
  $ echo "* = internal:fail" >> .hg/hgrc

  $ hg merge
  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]

  $ cat f
  line 1
  line 2
  third line

  $ hg stat
  M f

Merge using internal:local tool:

  $ hg update -C 2
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ sed 's/internal:fail/internal:local/' .hg/hgrc > .hg/hgrc.new
  $ mv .hg/hgrc.new .hg/hgrc

  $ hg merge
  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)

  $ cat f
  line 1
  line 2
  third line

  $ hg stat
  M f

Merge using internal:other tool:

  $ hg update -C 2
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ sed 's/internal:local/internal:other/' .hg/hgrc > .hg/hgrc.new
  $ mv .hg/hgrc.new .hg/hgrc

  $ hg merge
  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)

  $ cat f
  first line
  line 2
  line 3

  $ hg stat
  M f

Merge using default tool:

  $ hg update -C 2
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ rm .hg/hgrc

  $ hg merge
  merging f
  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)

  $ cat f
  first line
  line 2
  third line

  $ hg stat
  M f

Merge using internal:union tool:

  $ hg update -C 2
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ echo "line 4a" >>f
  $ hg ci -Am "Adding fourth line (commit 4)"
  $ hg update 2
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ echo "line 4b" >>f
  $ hg ci -Am "Adding fourth line v2 (commit 5)"
  created new head

  $ echo "[merge-patterns]" > .hg/hgrc
  $ echo "* = internal:union" >> .hg/hgrc

  $ hg merge 3
  merging f
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)

  $ cat f
  line 1
  line 2
  third line
  line 4b
  line 4a