test-narrow-commit.t
102 lines
| 2.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-narrow-commit.t
Augie Fackler
|
r36101 | #testcases flat tree | ||
Augie Fackler
|
r36096 | $ . "$TESTDIR/narrow-library.sh" | ||
Augie Fackler
|
r36101 | #if tree | ||
$ cat << EOF >> $HGRCPATH | ||||
> [experimental] | ||||
> treemanifest = 1 | ||||
> EOF | ||||
#endif | ||||
Augie Fackler
|
r36096 | create full repo | ||
$ hg init master | ||||
$ cd master | ||||
$ mkdir inside | ||||
$ echo inside > inside/f1 | ||||
$ mkdir outside | ||||
$ echo outside > outside/f1 | ||||
$ hg ci -Aqm 'initial' | ||||
$ echo modified > inside/f1 | ||||
$ hg ci -qm 'modify inside' | ||||
$ echo modified > outside/f1 | ||||
$ hg ci -qm 'modify outside' | ||||
$ cd .. | ||||
$ hg clone --narrow ssh://user@dummy/master narrow --include inside | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 2 changes to 1 files | ||||
new changesets *:* (glob) | ||||
updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd narrow | ||||
$ hg update -q 0 | ||||
Can not modify dirstate outside | ||||
$ mkdir outside | ||||
$ touch outside/f1 | ||||
$ hg debugwalk -I 'relglob:f1' | ||||
matcher: <includematcher includes='(?:(?:|.*/)f1(?:/|$))'> | ||||
f inside/f1 inside/f1 | ||||
$ hg add outside/f1 | ||||
abort: cannot track 'outside/f1' - it is outside the narrow clone | ||||
[255] | ||||
$ touch outside/f3 | ||||
$ hg add outside/f3 | ||||
abort: cannot track 'outside/f3' - it is outside the narrow clone | ||||
[255] | ||||
Yuya Nishihara
|
r36218 | |||
But adding a truly excluded file shouldn't count | ||||
$ hg add outside/f3 -X outside/f3 | ||||
Augie Fackler
|
r36096 | $ rm -r outside | ||
Can modify dirstate inside | ||||
$ echo modified > inside/f1 | ||||
$ touch inside/f3 | ||||
$ hg add inside/f3 | ||||
$ hg status | ||||
M inside/f1 | ||||
A inside/f3 | ||||
$ hg revert -qC . | ||||
$ rm inside/f3 | ||||
Can commit changes inside. Leaves outside unchanged. | ||||
$ hg update -q 'desc("initial")' | ||||
$ echo modified2 > inside/f1 | ||||
Martin von Zweigbergk
|
r36228 | $ hg manifest --debug | ||
4d6a634d5ba06331a60c29ee0db8412490a54fcd 644 inside/f1 | ||||
7fb3bb6356d28d4dc352c5ba52d7350a81b6bd46 644 outside/f1 (flat !) | ||||
d0f2f706468ab0e8bec7af87446835fb1b13511b 755 d outside/ (tree !) | ||||
Augie Fackler
|
r36096 | $ hg commit -m 'modify inside/f1' | ||
created new head | ||||
$ hg files -r . | ||||
inside/f1 | ||||
Augie Fackler
|
r36101 | outside/f1 (flat !) | ||
outside/ (tree !) | ||||
Martin von Zweigbergk
|
r36228 | $ hg manifest --debug | ||
3f4197b4a11b9016e77ebc47fe566944885fd11b 644 inside/f1 | ||||
7fb3bb6356d28d4dc352c5ba52d7350a81b6bd46 644 outside/f1 (flat !) | ||||
d0f2f706468ab0e8bec7af87446835fb1b13511b 755 d outside/ (tree !) | ||||
Augie Fackler
|
r36096 | Some filesystems (notably FAT/exFAT only store timestamps with 2 | ||
seconds of precision, so by sleeping for 3 seconds, we can ensure that | ||||
the timestamps of files stored by dirstate will appear older than the | ||||
dirstate file, and therefore we'll be able to get stable output from | ||||
debugdirstate. If we don't do this, the test can be slightly flaky. | ||||
$ sleep 3 | ||||
$ hg status | ||||
$ hg debugdirstate --nodates | ||||
n 644 10 set inside/f1 | ||||