test-annotate.t
608 lines
| 10.2 KiB
| text/troff
|
Tads3Lexer
/ tests / test-annotate.t
Martin Geisler
|
r11852 | $ HGMERGE=true; export HGMERGE | ||
init | ||||
Patrick Mezard
|
r15528 | $ hg init repo | ||
$ cd repo | ||||
Martin Geisler
|
r11852 | |||
commit | ||||
$ echo 'a' > a | ||||
$ hg ci -A -m test -u nobody -d '1 0' | ||||
adding a | ||||
annotate -c | ||||
$ hg annotate -c a | ||||
8435f90966e4: a | ||||
annotate -cl | ||||
$ hg annotate -cl a | ||||
8435f90966e4:1: a | ||||
annotate -d | ||||
$ hg annotate -d a | ||||
Thu Jan 01 00:00:01 1970 +0000: a | ||||
annotate -n | ||||
$ hg annotate -n a | ||||
0: a | ||||
annotate -nl | ||||
$ hg annotate -nl a | ||||
0:1: a | ||||
annotate -u | ||||
$ hg annotate -u a | ||||
nobody: a | ||||
annotate -cdnu | ||||
$ hg annotate -cdnu a | ||||
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000: a | ||||
annotate -cdnul | ||||
$ hg annotate -cdnul a | ||||
nobody 0 8435f90966e4 Thu Jan 01 00:00:01 1970 +0000:1: a | ||||
Yuya Nishihara
|
r22480 | annotate (JSON) | ||
$ hg annotate -Tjson a | ||||
[ | ||||
{ | ||||
"line": "a\n", | ||||
"rev": 0 | ||||
} | ||||
] | ||||
$ hg annotate -Tjson -cdfnul a | ||||
[ | ||||
{ | ||||
"date": [1.0, 0], | ||||
"file": "a", | ||||
"line": "a\n", | ||||
"line_number": 1, | ||||
"node": "8435f90966e442695d2ded29fdade2bac5ad8065", | ||||
"rev": 0, | ||||
"user": "nobody" | ||||
} | ||||
] | ||||
Martin Geisler
|
r11852 | $ cat <<EOF >>a | ||
> a | ||||
> a | ||||
> EOF | ||||
$ hg ci -ma1 -d '1 0' | ||||
$ hg cp a b | ||||
$ hg ci -mb -d '1 0' | ||||
$ cat <<EOF >> b | ||||
> b4 | ||||
> b5 | ||||
> b6 | ||||
> EOF | ||||
$ hg ci -mb2 -d '2 0' | ||||
annotate -n b | ||||
$ hg annotate -n b | ||||
0: a | ||||
1: a | ||||
1: a | ||||
3: b4 | ||||
3: b5 | ||||
3: b6 | ||||
annotate --no-follow b | ||||
$ hg annotate --no-follow b | ||||
2: a | ||||
2: a | ||||
2: a | ||||
3: b4 | ||||
3: b5 | ||||
3: b6 | ||||
annotate -nl b | ||||
$ hg annotate -nl b | ||||
0:1: a | ||||
1:2: a | ||||
1:3: a | ||||
3:4: b4 | ||||
3:5: b5 | ||||
3:6: b6 | ||||
annotate -nf b | ||||
$ hg annotate -nf b | ||||
0 a: a | ||||
1 a: a | ||||
1 a: a | ||||
3 b: b4 | ||||
3 b: b5 | ||||
3 b: b6 | ||||
annotate -nlf b | ||||
$ hg annotate -nlf b | ||||
0 a:1: a | ||||
1 a:2: a | ||||
1 a:3: a | ||||
3 b:4: b4 | ||||
3 b:5: b5 | ||||
3 b:6: b6 | ||||
$ hg up -C 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat <<EOF >> b | ||||
> b4 | ||||
> c | ||||
> b5 | ||||
> EOF | ||||
$ hg ci -mb2.1 -d '2 0' | ||||
created new head | ||||
$ hg merge | ||||
merging b | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci -mmergeb -d '3 0' | ||||
annotate after merge | ||||
$ hg annotate -nf b | ||||
0 a: a | ||||
1 a: a | ||||
1 a: a | ||||
3 b: b4 | ||||
4 b: c | ||||
3 b: b5 | ||||
annotate after merge with -l | ||||
$ hg annotate -nlf b | ||||
0 a:1: a | ||||
1 a:2: a | ||||
1 a:3: a | ||||
3 b:4: b4 | ||||
4 b:5: c | ||||
3 b:5: b5 | ||||
$ hg up -C 1 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg cp a b | ||||
$ cat <<EOF > b | ||||
> a | ||||
> z | ||||
> a | ||||
> EOF | ||||
$ hg ci -mc -d '3 0' | ||||
created new head | ||||
$ hg merge | ||||
merging b | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ cat <<EOF >> b | ||||
> b4 | ||||
> c | ||||
> b5 | ||||
> EOF | ||||
$ echo d >> b | ||||
$ hg ci -mmerge2 -d '4 0' | ||||
annotate after rename merge | ||||
$ hg annotate -nf b | ||||
0 a: a | ||||
6 b: z | ||||
1 a: a | ||||
3 b: b4 | ||||
4 b: c | ||||
3 b: b5 | ||||
7 b: d | ||||
annotate after rename merge with -l | ||||
$ hg annotate -nlf b | ||||
0 a:1: a | ||||
6 b:2: z | ||||
1 a:3: a | ||||
3 b:4: b4 | ||||
4 b:5: c | ||||
3 b:5: b5 | ||||
7 b:7: d | ||||
Thomas Arendsen Hein
|
r14358 | Issue2807: alignment of line numbers with -l | ||
$ echo more >> b | ||||
$ hg ci -mmore -d '5 0' | ||||
$ echo more >> b | ||||
$ hg ci -mmore -d '6 0' | ||||
$ echo more >> b | ||||
$ hg ci -mmore -d '7 0' | ||||
$ hg annotate -nlf b | ||||
0 a: 1: a | ||||
6 b: 2: z | ||||
1 a: 3: a | ||||
3 b: 4: b4 | ||||
4 b: 5: c | ||||
3 b: 5: b5 | ||||
7 b: 7: d | ||||
8 b: 8: more | ||||
9 b: 9: more | ||||
10 b:10: more | ||||
Martin Geisler
|
r11852 | linkrev vs rev | ||
$ hg annotate -r tip -n a | ||||
0: a | ||||
1: a | ||||
1: a | ||||
linkrev vs rev with -l | ||||
$ hg annotate -r tip -nl a | ||||
0:1: a | ||||
1:2: a | ||||
1:3: a | ||||
Martin Geisler
|
r12399 | Issue589: "undelete" sequence leads to crash | ||
Martin Geisler
|
r11852 | |||
annotate was crashing when trying to --follow something | ||||
like A -> B -> A | ||||
generate ABA rename configuration | ||||
$ echo foo > foo | ||||
$ hg add foo | ||||
$ hg ci -m addfoo | ||||
$ hg rename foo bar | ||||
$ hg ci -m renamefoo | ||||
$ hg rename bar foo | ||||
$ hg ci -m renamebar | ||||
annotate after ABA with follow | ||||
$ hg annotate --follow foo | ||||
foo: foo | ||||
Matt Mackall
|
r13697 | missing file | ||
$ hg ann nosuchfile | ||||
Thomas Arendsen Hein
|
r14358 | abort: nosuchfile: no such file in rev e9e6b4fa872f | ||
Matt Mackall
|
r13697 | [255] | ||
Patrick Mezard
|
r15528 | |||
Ion Savin
|
r15829 | annotate file without '\n' on last line | ||
$ printf "" > c | ||||
$ hg ci -A -m test -u nobody -d '1 0' | ||||
adding c | ||||
$ hg annotate c | ||||
$ printf "a\nb" > c | ||||
$ hg ci -m test | ||||
$ hg annotate c | ||||
[0-9]+: a (re) | ||||
[0-9]+: b (re) | ||||
FUJIWARA Katsunori
|
r18993 | Issue3841: check annotation of the file of which filelog includes | ||
merging between the revision and its ancestor | ||||
to reproduce the situation with recent Mercurial, this script uses (1) | ||||
"hg debugsetparents" to merge without ancestor check by "hg merge", | ||||
and (2) the extension to allow filelog merging between the revision | ||||
and its ancestor by overriding "repo._filecommit". | ||||
$ cat > ../legacyrepo.py <<EOF | ||||
Pierre-Yves David
|
r26587 | > from mercurial import node, error | ||
FUJIWARA Katsunori
|
r18993 | > def reposetup(ui, repo): | ||
> class legacyrepo(repo.__class__): | ||||
> def _filecommit(self, fctx, manifest1, manifest2, | ||||
> linkrev, tr, changelist): | ||||
> fname = fctx.path() | ||||
> text = fctx.data() | ||||
> flog = self.file(fname) | ||||
> fparent1 = manifest1.get(fname, node.nullid) | ||||
> fparent2 = manifest2.get(fname, node.nullid) | ||||
> meta = {} | ||||
> copy = fctx.renamed() | ||||
> if copy and copy[0] != fname: | ||||
Pierre-Yves David
|
r26587 | > raise error.Abort('copying is not supported') | ||
FUJIWARA Katsunori
|
r18993 | > if fparent2 != node.nullid: | ||
> changelist.append(fname) | ||||
> return flog.add(text, meta, tr, linkrev, | ||||
> fparent1, fparent2) | ||||
Pierre-Yves David
|
r26587 | > raise error.Abort('only merging is supported') | ||
FUJIWARA Katsunori
|
r18993 | > repo.__class__ = legacyrepo | ||
> EOF | ||||
$ cat > baz <<EOF | ||||
> 1 | ||||
> 2 | ||||
> 3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg add baz | ||||
$ hg commit -m "baz:0" | ||||
$ cat > baz <<EOF | ||||
> 1 baz:1 | ||||
> 2 | ||||
> 3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg commit -m "baz:1" | ||||
$ cat > baz <<EOF | ||||
> 1 baz:1 | ||||
> 2 baz:2 | ||||
> 3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg debugsetparents 17 17 | ||||
$ hg --config extensions.legacyrepo=../legacyrepo.py commit -m "baz:2" | ||||
$ hg debugindexdot .hg/store/data/baz.i | ||||
digraph G { | ||||
-1 -> 0 | ||||
0 -> 1 | ||||
1 -> 2 | ||||
1 -> 2 | ||||
} | ||||
$ hg annotate baz | ||||
17: 1 baz:1 | ||||
18: 2 baz:2 | ||||
16: 3 | ||||
16: 4 | ||||
16: 5 | ||||
$ cat > baz <<EOF | ||||
> 1 baz:1 | ||||
> 2 baz:2 | ||||
> 3 baz:3 | ||||
> 4 | ||||
> 5 | ||||
> EOF | ||||
$ hg commit -m "baz:3" | ||||
$ cat > baz <<EOF | ||||
> 1 baz:1 | ||||
> 2 baz:2 | ||||
> 3 baz:3 | ||||
> 4 baz:4 | ||||
> 5 | ||||
> EOF | ||||
$ hg debugsetparents 19 18 | ||||
$ hg --config extensions.legacyrepo=../legacyrepo.py commit -m "baz:4" | ||||
$ hg debugindexdot .hg/store/data/baz.i | ||||
digraph G { | ||||
-1 -> 0 | ||||
0 -> 1 | ||||
1 -> 2 | ||||
1 -> 2 | ||||
2 -> 3 | ||||
3 -> 4 | ||||
2 -> 4 | ||||
} | ||||
$ hg annotate baz | ||||
17: 1 baz:1 | ||||
18: 2 baz:2 | ||||
19: 3 baz:3 | ||||
20: 4 baz:4 | ||||
16: 5 | ||||
Yuya Nishihara
|
r24421 | annotate clean file | ||
$ hg annotate -ncr "wdir()" foo | ||||
11 472b18db256d : foo | ||||
annotate modified file | ||||
$ echo foofoo >> foo | ||||
$ hg annotate -r "wdir()" foo | ||||
11 : foo | ||||
20+: foofoo | ||||
$ hg annotate -cr "wdir()" foo | ||||
472b18db256d : foo | ||||
b6bedd5477e7+: foofoo | ||||
$ hg annotate -ncr "wdir()" foo | ||||
11 472b18db256d : foo | ||||
20 b6bedd5477e7+: foofoo | ||||
$ hg annotate --debug -ncr "wdir()" foo | ||||
11 472b18db256d1e8282064eab4bfdaf48cbfe83cd : foo | ||||
20 b6bedd5477e797f25e568a6402d4697f3f895a72+: foofoo | ||||
$ hg annotate -udr "wdir()" foo | ||||
test Thu Jan 01 00:00:00 1970 +0000: foo | ||||
test [A-Za-z0-9:+ ]+: foofoo (re) | ||||
$ hg annotate -ncr "wdir()" -Tjson foo | ||||
[ | ||||
{ | ||||
"line": "foo\n", | ||||
"node": "472b18db256d1e8282064eab4bfdaf48cbfe83cd", | ||||
"rev": 11 | ||||
}, | ||||
{ | ||||
"line": "foofoo\n", | ||||
"node": null, | ||||
"rev": null | ||||
} | ||||
] | ||||
annotate added file | ||||
$ echo bar > bar | ||||
$ hg add bar | ||||
$ hg annotate -ncr "wdir()" bar | ||||
20 b6bedd5477e7+: bar | ||||
annotate renamed file | ||||
$ hg rename foo renamefoo2 | ||||
$ hg annotate -ncr "wdir()" renamefoo2 | ||||
11 472b18db256d : foo | ||||
20 b6bedd5477e7+: foofoo | ||||
annotate missing file | ||||
$ rm baz | ||||
Matt Harbison
|
r24498 | #if windows | ||
$ hg annotate -ncr "wdir()" baz | ||||
abort: $TESTTMP\repo\baz: The system cannot find the file specified | ||||
[255] | ||||
#else | ||||
Yuya Nishihara
|
r24421 | $ hg annotate -ncr "wdir()" baz | ||
abort: No such file or directory: $TESTTMP/repo/baz | ||||
[255] | ||||
Matt Harbison
|
r24498 | #endif | ||
Yuya Nishihara
|
r24421 | |||
annotate removed file | ||||
$ hg rm baz | ||||
Matt Harbison
|
r24498 | #if windows | ||
$ hg annotate -ncr "wdir()" baz | ||||
abort: $TESTTMP\repo\baz: The system cannot find the file specified | ||||
[255] | ||||
#else | ||||
Yuya Nishihara
|
r24421 | $ hg annotate -ncr "wdir()" baz | ||
abort: No such file or directory: $TESTTMP/repo/baz | ||||
[255] | ||||
Matt Harbison
|
r24498 | #endif | ||
Yuya Nishihara
|
r24421 | |||
Patrick Mezard
|
r15528 | Test annotate with whitespace options | ||
$ cd .. | ||||
$ hg init repo-ws | ||||
$ cd repo-ws | ||||
$ cat > a <<EOF | ||||
> aa | ||||
> | ||||
> b b | ||||
> EOF | ||||
$ hg ci -Am "adda" | ||||
adding a | ||||
Mads Kiilerich
|
r17347 | $ sed 's/EOL$//g' > a <<EOF | ||
Patrick Mezard
|
r15528 | > a a | ||
> | ||||
Mads Kiilerich
|
r17347 | > EOL | ||
Patrick Mezard
|
r15528 | > b b | ||
> EOF | ||||
$ hg ci -m "changea" | ||||
Annotate with no option | ||||
$ hg annotate a | ||||
1: a a | ||||
0: | ||||
1: | ||||
1: b b | ||||
Annotate with --ignore-space-change | ||||
$ hg annotate --ignore-space-change a | ||||
1: a a | ||||
1: | ||||
0: | ||||
0: b b | ||||
Annotate with --ignore-all-space | ||||
$ hg annotate --ignore-all-space a | ||||
0: a a | ||||
0: | ||||
1: | ||||
0: b b | ||||
Annotate with --ignore-blank-lines (similar to no options case) | ||||
$ hg annotate --ignore-blank-lines a | ||||
1: a a | ||||
0: | ||||
1: | ||||
1: b b | ||||
Mads Kiilerich
|
r16913 | $ cd .. | ||
Pierre-Yves David
|
r23702 | |||
Annotate with linkrev pointing to another branch | ||||
------------------------------------------------ | ||||
create history with a filerev whose linkrev points to another branch | ||||
$ hg init branchedlinkrev | ||||
$ cd branchedlinkrev | ||||
$ echo A > a | ||||
$ hg commit -Am 'contentA' | ||||
adding a | ||||
$ echo B >> a | ||||
$ hg commit -m 'contentB' | ||||
$ hg up --rev 'desc(contentA)' | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo unrelated > unrelated | ||||
$ hg commit -Am 'unrelated' | ||||
adding unrelated | ||||
created new head | ||||
$ hg graft -r 'desc(contentB)' | ||||
grafting 1:fd27c222e3e6 "contentB" | ||||
$ echo C >> a | ||||
$ hg commit -m 'contentC' | ||||
Yuya Nishihara
|
r24817 | $ echo W >> a | ||
Pierre-Yves David
|
r23702 | $ hg log -G | ||
@ changeset: 4:072f1e8df249 | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: contentC | ||||
| | ||||
o changeset: 3:ff38df03cc4b | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: contentB | ||||
| | ||||
o changeset: 2:62aaf3f6fc06 | ||||
| parent: 0:f0932f74827e | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: unrelated | ||||
| | ||||
| o changeset: 1:fd27c222e3e6 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: contentB | ||||
| | ||||
o changeset: 0:f0932f74827e | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: contentA | ||||
Annotate should list ancestor of starting revision only | ||||
$ hg annotate a | ||||
0: A | ||||
3: B | ||||
4: C | ||||
Yuya Nishihara
|
r24817 | $ hg annotate a -r 'wdir()' | ||
0 : A | ||||
3 : B | ||||
4 : C | ||||
4+: W | ||||
Pierre-Yves David
|
r23705 | Even when the starting revision is the linkrev-shadowed one: | ||
$ hg annotate a -r 3 | ||||
0: A | ||||
3: B | ||||
Pierre-Yves David
|
r23702 | $ cd .. | ||