test-merge-subrepos.t
140 lines
| 3.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-merge-subrepos.t
Oleg Stepanov
|
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
|
r33365 | abort: uncommitted changes in subrepository "subrepo" | ||
Oleg Stepanov
|
r13437 | [255] | ||
Matt Harbison
|
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
|
r33359 | $ echo change > subrepo/b | ||
$ hg ci -Sm 'change b' | ||||
committing subrepository subrepo | ||||
Matt Harbison
|
r33193 | $ rm a | ||
$ hg id | ||||
Matt Harbison
|
r33359 | 9bfe45a197d7+ tip | ||
Matt Harbison
|
r33193 | $ hg sum | ||
Matt Harbison
|
r33359 | parent: 4:9bfe45a197d7 tip | ||
change b | ||||
Matt Harbison
|
r33193 | branch: default | ||
commit: 1 deleted (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Matt Harbison
|
r33359 | phases: 5 draft | ||
Matt Harbison
|
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
|
r33364 | A deleted subrepo file is flagged as dirty, like the top level repo | ||
Matt Harbison
|
r33193 | |||
Matt Harbison
|
r33359 | $ hg id --config extensions.blackbox= --config blackbox.dirty=True | ||
Matt Harbison
|
r33364 | 9bfe45a197d7+ tip | ||
Matt Harbison
|
r33359 | $ cat .hg/blackbox.log | ||
Saurabh Singh
|
r34451 | * @9bfe45a197d7b0ab09bf287729dd57e9619c9da5+ (*)> serve --cmdserver chgunix * (glob) (chg !) | ||
Yuya Nishihara
|
r35063 | * @9bfe45a197d7b0ab09bf287729dd57e9619c9da5+ (*)> id --config *extensions.blackbox=* --config *blackbox.dirty=True* (glob) | ||
Matt Harbison
|
r33364 | * @9bfe45a197d7b0ab09bf287729dd57e9619c9da5+ (*)> id --config *extensions.blackbox=* --config *blackbox.dirty=True* exited 0 * (glob) | ||
Matt Harbison
|
r33193 | |||
TODO: a deleted file should be listed as such, like the top level repo | ||||
$ hg sum | ||||
Matt Harbison
|
r33359 | parent: 4:9bfe45a197d7 tip | ||
change b | ||||
Matt Harbison
|
r33193 | branch: default | ||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Matt Harbison
|
r33359 | phases: 5 draft | ||
Matt Harbison
|
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
|
r33365 | abort: uncommitted changes in subrepository "subrepo" | ||
Matt Harbison
|
r33193 | [255] | ||
$ hg sum | ||||
Matt Harbison
|
r33359 | parent: 4:9bfe45a197d7 tip | ||
change b | ||||
Matt Harbison
|
r33193 | branch: default | ||
commit: 1 subrepos | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Matt Harbison
|
r33359 | phases: 5 draft | ||
Matt Harbison
|
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
|
r33364 | `hg update --check` notices a subrepo with a missing file, like it notices a | ||
missing file in the top level repo. | ||||
Matt Harbison
|
r33193 | |||
Matt Harbison
|
r33364 | $ hg up -r '.^' --check | ||
Matt Harbison
|
r33365 | abort: uncommitted changes in subrepository "subrepo" | ||
Matt Harbison
|
r33364 | [255] | ||
$ hg up -r '.^' --config ui.interactive=True << EOF | ||||
Matt Harbison
|
r33366 | > d | ||
Matt Harbison
|
r33359 | > EOF | ||
Pulkit Goyal
|
r39321 | file 'b' was deleted in local [working copy] but was modified in other [destination]. | ||
Augie Fackler
|
r39313 | What do you want to do? | ||
Matt Harbison
|
r33366 | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? d | ||
Matt Harbison
|
r33193 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Matt Harbison
|
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
|
r33193 | $ hg st -S | ||
Matt Harbison
|
r33366 | $ hg st -R subrepo | ||
$ hg files -R subrepo | ||||
[1] | ||||
$ hg files -R subrepo -r '.' | ||||
Matt Harbison
|
r35394 | subrepo/b | ||
Matt Harbison
|
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
|
r33365 | abort: uncommitted changes in subrepository "subrepo" | ||
Matt Harbison
|
r33193 | [255] | ||