Mercurial > hg
view tests/test-automv.t @ 47692:e5fb14a07866
dirstate-map: move most of `dirstate.update_file` logic in the dsmap
A new `reset_state` method is introduced to deal with most of that logic. This
move things one layer lower, but the ultimate goal is to deal with most of this
at the DirstateItem level.
This reveal various imperfection with the data passed to update_file by
`mergestate.recordupdates`, however this is orthogonal to this patch and should
be dealt with at a higher level.
Differential Revision: https://phab.mercurial-scm.org/D11134
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 19 Jul 2021 07:23:55 +0200 |
parents | 20f533a92eda |
children |
line wrap: on
line source
Tests for the automv extension; detect moved files at commit time. $ cat >> $HGRCPATH << EOF > [extensions] > automv= > rebase= > EOF Setup repo $ hg init repo $ cd repo Test automv command for commit $ printf 'foo\nbar\nbaz\n' > a.txt $ hg add a.txt $ hg commit -m 'init repo with a' mv/rm/add $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ hg status -C A b.txt R a.txt $ hg commit -m 'msg' detected move of 1 files $ hg status --change . -C A b.txt a.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved mv/rm/add/modif $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit -m 'msg' detected move of 1 files created new head $ hg status --change . -C A b.txt a.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved mv/rm/add/modif $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\nfoo\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit -m 'msg' created new head $ hg status --change . -C A b.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved mv/rm/add/modif/changethreshold $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\nfoo\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit --config automv.similarity='60' -m 'msg' detected move of 1 files created new head $ hg status --change . -C A b.txt a.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved mv $ mv a.txt b.txt $ hg status -C ! a.txt ? b.txt $ hg commit -m 'msg' nothing changed (1 missing files, see 'hg status') [1] $ hg status -C ! a.txt ? b.txt $ hg revert -aqC $ rm b.txt mv/rm/add/notincommitfiles $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ echo 'bar' > c.txt $ hg add c.txt $ hg status -C A b.txt A c.txt R a.txt $ hg commit c.txt -m 'msg' created new head $ hg status --change . -C A c.txt $ hg status -C A b.txt R a.txt $ hg up -r 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg rm a.txt $ echo 'bar' > c.txt $ hg add c.txt $ hg commit -m 'msg' detected move of 1 files created new head $ hg status --change . -C A b.txt a.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv/rm/add/--no-automv $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ hg status -C A b.txt R a.txt $ hg commit --no-automv -m 'msg' created new head $ hg status --change . -C A b.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved Test automv command for commit --amend mv/rm/add $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ hg status -C A b.txt R a.txt $ hg commit --amend -m 'amended' detected move of 1 files saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt a.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv/rm/add/modif $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit --amend -m 'amended' detected move of 1 files saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt a.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv/rm/add/modif $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\nfoo\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit --amend -m 'amended' saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv/rm/add/modif/changethreshold $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ printf '\nfoo\n' >> b.txt $ hg status -C A b.txt R a.txt $ hg commit --amend --config automv.similarity='60' -m 'amended' detected move of 1 files saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt a.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg status -C ! a.txt ? b.txt $ hg commit --amend -m 'amended' saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status -C ! a.txt ? b.txt $ hg up -Cr 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved mv/rm/add/notincommitfiles $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ echo 'bar' > d.txt $ hg add d.txt $ hg status -C A b.txt A d.txt R a.txt $ hg commit --amend -m 'amended' d.txt saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A c.txt A d.txt $ hg status -C A b.txt R a.txt $ hg commit --amend -m 'amended' detected move of 1 files saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt a.txt A c.txt A d.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 3 files removed, 0 files unresolved mv/rm/add/--no-automv $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg add b.txt $ hg status -C A b.txt R a.txt $ hg commit --amend -m 'amended' --no-automv saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt A c.txt R a.txt $ hg up -r 0 1 files updated, 0 files merged, 2 files removed, 0 files unresolved mv/rm/commit/add/amend $ echo 'c' > c.txt $ hg add c.txt $ hg commit -m 'revision to amend to' created new head $ mv a.txt b.txt $ hg rm a.txt $ hg status -C R a.txt ? b.txt $ hg commit -m "removed a" $ hg add b.txt $ hg commit --amend -m 'amended' saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-amend.hg (glob) $ hg status --change . -C A b.txt R a.txt error conditions $ cat >> $HGRCPATH << EOF > [automv] > similarity=110 > EOF $ hg commit -m 'revision to amend to' abort: automv.similarity must be between 0 and 100 [255]