##// END OF EJS Templates
test-convert-cvs: make test compatible with chg...
test-convert-cvs: make test compatible with chg The test uses the 'print' method instead of writing to stdout using 'ui.write' which leads to incompatibility with chg. This commit modifies the test to use the 'ui' object instead which fixes the problem. Test Plan: Ran the test 'test-convert-cvs.t' with and without '--chg' option. Differential Revision: https://phab.mercurial-scm.org/D923

File last commit:

r33366:062c1bde default
r34450:47b9c572 default
Show More
test-merge-subrepos.t
138 lines | 3.2 KiB | text/troff | Tads3Lexer
/ tests / test-merge-subrepos.t
Oleg Stepanov
Do not allow merging with uncommitted changes in a subrepo
r13437 $ hg init
$ echo a > a
$ hg ci -qAm 'add a'
$ hg init subrepo
$ echo 'subrepo = http://example.net/libfoo' > .hgsub
$ hg ci -qAm 'added subrepo'
$ hg up -qC 0
$ echo ax > a
$ hg ci -m 'changed a'
created new head
$ hg up -qC 1
$ cd subrepo
$ echo b > b
$ hg add b
$ cd ..
Should fail, since there are added files to subrepo:
$ hg merge
Matt Harbison
subrepo: make the output references to subrepositories consistent...
r33365 abort: uncommitted changes in subrepository "subrepo"
Oleg Stepanov
Do not allow merging with uncommitted changes in a subrepo
r13437 [255]
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
Deleted files trigger a '+' marker in top level repos. Deleted files are also
noticed by `update --check` in the top level repo.
$ hg ci -Sqm 'add b'
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 $ echo change > subrepo/b
$ hg ci -Sm 'change b'
committing subrepository subrepo
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 $ rm a
$ hg id
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 9bfe45a197d7+ tip
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 $ hg sum
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 parent: 4:9bfe45a197d7 tip
change b
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 branch: default
commit: 1 deleted (clean)
update: 1 new changesets, 2 branch heads (merge)
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 phases: 5 draft
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
$ hg up --check -r '.^'
abort: uncommitted changes
[255]
$ hg st -S
! a
$ hg up -Cq .
Test that dirty is consistent through subrepos
$ rm subrepo/b
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 A deleted subrepo file is flagged as dirty, like the top level repo
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 $ hg id --config extensions.blackbox= --config blackbox.dirty=True
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 9bfe45a197d7+ tip
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 $ cat .hg/blackbox.log
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 * @9bfe45a197d7b0ab09bf287729dd57e9619c9da5+ (*)> id (glob)
* @9bfe45a197d7b0ab09bf287729dd57e9619c9da5+ (*)> id --config *extensions.blackbox=* --config *blackbox.dirty=True* exited 0 * (glob)
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
TODO: a deleted file should be listed as such, like the top level repo
$ hg sum
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 parent: 4:9bfe45a197d7 tip
change b
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 branch: default
commit: (clean)
update: 1 new changesets, 2 branch heads (merge)
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 phases: 5 draft
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
Modified subrepo files are noticed by `update --check` and `summary`
$ echo mod > subrepo/b
$ hg st -S
M subrepo/b
$ hg up -r '.^' --check
Matt Harbison
subrepo: make the output references to subrepositories consistent...
r33365 abort: uncommitted changes in subrepository "subrepo"
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 [255]
$ hg sum
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 parent: 4:9bfe45a197d7 tip
change b
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 branch: default
commit: 1 subrepos
update: 1 new changesets, 2 branch heads (merge)
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 phases: 5 draft
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
TODO: why is -R needed here? If it's because the subrepo is treated as a
discrete unit, then this should probably warn or something.
$ hg revert -R subrepo --no-backup subrepo/b -r .
$ rm subrepo/b
$ hg st -S
! subrepo/b
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 `hg update --check` notices a subrepo with a missing file, like it notices a
missing file in the top level repo.
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 $ hg up -r '.^' --check
Matt Harbison
subrepo: make the output references to subrepositories consistent...
r33365 abort: uncommitted changes in subrepository "subrepo"
Matt Harbison
subrepo: consider the parent repo dirty when a file is missing...
r33364 [255]
$ hg up -r '.^' --config ui.interactive=True << EOF
Matt Harbison
test-subrepo: demonstrate a status problem when merge deletes a file...
r33366 > d
Matt Harbison
tests: tweak the subrepo dirty state tests...
r33359 > EOF
other [destination] changed b which local [working copy] deleted
Matt Harbison
test-subrepo: demonstrate a status problem when merge deletes a file...
r33366 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Harbison
test-subrepo: demonstrate a status problem when merge deletes a file...
r33366 XXX: There's a difference between wdir() and '.', so there should be a status.
`hg files -S` from the top is also missing 'subrepo/b'.
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 $ hg st -S
Matt Harbison
test-subrepo: demonstrate a status problem when merge deletes a file...
r33366 $ hg st -R subrepo
$ hg files -R subrepo
[1]
$ hg files -R subrepo -r '.'
subrepo/b (glob)
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193
$ hg bookmark -r tip @other
$ echo xyz > subrepo/c
$ hg ci -SAm 'add c'
adding subrepo/c
committing subrepository subrepo
created new head
$ rm subrepo/c
Merge sees deleted subrepo files as an uncommitted change
$ hg merge @other
Matt Harbison
subrepo: make the output references to subrepositories consistent...
r33365 abort: uncommitted changes in subrepository "subrepo"
Matt Harbison
tests: demonstrate inconsistencies with dirty state in various commands...
r33193 [255]