view tests/test-pathconflicts-update.t @ 51316:178e50edb4f8

changelog: stop useless enforcing split at the end of transaction Changelogs are no longer created inline, and existing changelogs are automatically split. Since we now enforce splitting at the start of any write, we don't need to enforce splitting at the end of the transaction. This has the nice side effect of killing the only user of "side_write".
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 11 Jan 2024 16:35:52 +0100
parents dc00324e80f4
children
line wrap: on
line source

Path conflict checking is currently disabled by default because of issue5716.
Turn it on for this test.

  $ cat >> $HGRCPATH << EOF
  > [experimental]
  > merge.checkpathconflicts=True
  > EOF

  $ hg init repo
  $ cd repo
  $ echo base > base
  $ hg add base
  $ hg commit -m "base"
  $ hg bookmark -i base
  $ mkdir a
  $ echo 1 > a/b
  $ hg add a/b
  $ hg commit -m "file"
  $ hg bookmark -i file
  $ echo 2 > a/b
  $ hg commit -m "file2"
  $ hg bookmark -i file2
  $ hg up 0
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ mkdir a
#if symlink
  $ ln -s c a/b
#else
  $ touch a/b
#endif
  $ hg add a/b
  $ hg commit -m "link"
  created new head
  $ hg bookmark -i link
  $ hg up 0
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ mkdir -p a/b/c
  $ echo 2 > a/b/c/d
  $ hg add a/b/c/d
  $ hg commit -m "dir"
  created new head
  $ hg bookmark -i dir

Update - local file conflicts with remote directory:

  $ hg up -q 0
  $ mkdir a
  $ echo 9 > a/b
  $ hg up dir
  a/b: untracked file conflicts with directory
  abort: untracked files in working directory differ from files in requested revision
  [20]
  $ hg up dir --config merge.checkunknown=warn
  a/b: replacing untracked file
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark dir)
  $ cat a/b.orig
  9
  $ rm a/b.orig

Update - local symlink conflicts with remote directory:

  $ hg up -q 0
  $ mkdir a
#if symlink
  $ ln -s x a/b
#else
  $ touch a/b
#endif
  $ hg up dir
  a/b: untracked file conflicts with directory
  abort: untracked files in working directory differ from files in requested revision
  [20]
  $ hg up dir --config merge.checkunknown=warn
  a/b: replacing untracked file
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark dir)
#if symlink
  $ readlink.py a/b.orig
  a/b.orig -> x
#endif
  $ rm a/b.orig

Update - local directory conflicts with remote file

  $ hg up -q 0
  $ mkdir -p a/b/c
  $ echo 9 > a/b/c/d
  $ hg up file
  a/b: untracked directory conflicts with file
  abort: untracked files in working directory differ from files in requested revision
  [20]
  $ hg up file --config merge.checkunknown=warn
  a/b: replacing untracked files in directory
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark file)
  $ cat a/b
  1
  $ test -d a/b.orig
  $ rm -rf a/b.orig

Update - local directory conflicts with remote symlink

  $ hg up -q 0
  $ mkdir -p a/b/c
  $ echo 9 > a/b/c/d
  $ hg up link
  a/b: untracked directory conflicts with file
  abort: untracked files in working directory differ from files in requested revision
  [20]
  $ hg up link --config merge.checkunknown=warn
  a/b: replacing untracked files in directory
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark link)
#if symlink
  $ readlink.py a/b
  a/b -> c
#endif
  $ test -d a/b.orig
  $ rm -rf a/b.orig

Update - local renamed file conflicts with remote directory

  $ hg up -q 0
  $ hg mv base a
  $ hg status -C
  A a
    base
  R base
  $ hg up --check dir
  abort: uncommitted changes
  [20]
  $ hg up dir
  a: path conflict - a file or link has the same name as a directory
  the local file has been renamed to a~d20a80d4def3
  resolve manually then use 'hg resolve --mark a'
  1 files updated, 0 files merged, 0 files removed, 1 files unresolved
  use 'hg resolve' to retry unresolved file merges
  (activating bookmark dir)
  [1]
  $ hg status -C
  A a~d20a80d4def3
    base
  R base
  $ hg resolve --list
  P a
  $ hg up --clean -q 0

Update clean - local directory conflicts with changed remote file

  $ hg up -q file
  $ rm a/b
  $ mkdir a/b
  $ echo 9 > a/b/c
  $ hg up file2 --check --config merge.checkunknown=warn
  abort: uncommitted changes
  [20]
  $ hg up file2 --clean
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark file2)