tests/test-origbackup-conflict.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 13 Mar 2024 12:02:06 +0100
changeset 51599 b0aaffcb6fcf
parent 42343 d8e55c0c642c
permissions -rw-r--r--
tags-cache: directly perform a monimal walk for hgtagsfnodescache warming We do something narrower than the path retrieving data. So lets use dedicated code instead. This provides further useful speedup: ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # benchmark.name = hg.debug.debug-update-cache # bin-env-vars.hg.flavor = default # bin-env-vars.hg.py-re2-module = default # benchmark.variants.pre-state = warm before-this-series: 19.947581 skip-fnode-filter: 18.916804 (-5.17%, -1.03) use-rev-num: 17.493725 (-12.30%, -2.45) this-changesets: 15.919466 (-20.19%, -4.03)

Set up repo

  $ cat << EOF >> $HGRCPATH
  > [ui]
  > origbackuppath=.hg/origbackups
  > [merge]
  > checkunknown=warn
  > EOF
  $ hg init repo
  $ cd repo
  $ echo base > base
  $ hg add base
  $ hg commit -m "base"

Make a dir named b that contains a file, and a file named d

  $ mkdir -p b
  $ echo c1 > b/c
  $ echo d1 > d
  $ hg add b/c d
  $ hg commit -m "c1"
  $ hg bookmark c1

Peform an update that causes b/c to be backed up

  $ hg up -q 0
  $ mkdir -p b
  $ echo c2 > b/c
  $ hg up --verbose c1
  resolving manifests
  b/c: replacing untracked file
  getting b/c
  creating directory: $TESTTMP/repo/.hg/origbackups/b
  getting d
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark c1)
  $ test -f .hg/origbackups/b/c

Make files named b and d

  $ hg up -q 0
  $ echo b1 > b
  $ echo d2 > d
  $ hg add b d
  $ hg commit -m b1
  created new head
  $ hg bookmark b1

Perform an update that causes b to be backed up - it should replace the backup b dir

  $ hg up -q 0
  $ echo b2 > b
  $ hg up --verbose b1
  resolving manifests
  b: replacing untracked file
  getting b
  removing conflicting directory: $TESTTMP/repo/.hg/origbackups/b
  getting d
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark b1)
  $ test -f .hg/origbackups/b

Perform an update the causes b/c to be backed up again - it should replace the backup b file

  $ hg up -q 0
  $ mkdir b
  $ echo c3 > b/c
  $ hg up --verbose c1
  resolving manifests
  b/c: replacing untracked file
  getting b/c
  creating directory: $TESTTMP/repo/.hg/origbackups/b
  removing conflicting file: $TESTTMP/repo/.hg/origbackups/b
  getting d
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark c1)
  $ test -d .hg/origbackups/b

Cause two symlinks to be backed up that points to a valid location from the backup dir

  $ hg up -q 0
  $ mkdir ../sym-link-target
#if symlink
  $ ln -s ../../../sym-link-target b
  $ ln -s ../../../sym-link-target d
#else
  $ touch b d
#endif
  $ hg up b1
  b: replacing untracked file
  d: replacing untracked file
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark b1)
#if symlink
  $ readlink.py .hg/origbackups/b
  .hg/origbackups/b -> ../../../sym-link-target
#endif

Perform an update that causes b/c and d to be backed up again - b/c should not go into the target dir

  $ hg up -q 0
  $ mkdir b
  $ echo c4 > b/c
  $ echo d3 > d
  $ hg up --verbose c1
  resolving manifests
  b/c: replacing untracked file
  d: replacing untracked file
  getting b/c
  creating directory: $TESTTMP/repo/.hg/origbackups/b
  removing conflicting file: $TESTTMP/repo/.hg/origbackups/b
  getting d
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark c1)
  $ cat .hg/origbackups/b/c
  c4
  $ cat .hg/origbackups/d
  d3
  $ ls ../sym-link-target

Incorrectly configure origbackuppath to be under a file

  $ echo data > .hg/badorigbackups
  $ hg up -q 0
  $ mkdir b
  $ echo c5 > b/c
  $ hg up --verbose c1 --config ui.origbackuppath=.hg/badorigbackups
  resolving manifests
  b/c: replacing untracked file
  getting b/c
  creating directory: $TESTTMP/repo/.hg/badorigbackups/b
  removing conflicting file: $TESTTMP/repo/.hg/badorigbackups
  getting d
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (activating bookmark c1)
  $ ls .hg/badorigbackups/b
  c