mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
6ecd008e93
If the selected formatter is other than plainformatter, raw data are passed to the formatter. In this case, it isn't necessary (and not possible) to calculate column widths. Field names are substituted to be the same as "log" command. There are a few limitations: - "binary file" message is not included in formatted output. - no data structure for multiple files. all lines are packed to single list.
454 lines
7.0 KiB
Perl
454 lines
7.0 KiB
Perl
$ HGMERGE=true; export HGMERGE
|
|
|
|
init
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
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
|
|
|
|
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"
|
|
}
|
|
]
|
|
|
|
$ 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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
Issue589: "undelete" sequence leads to crash
|
|
|
|
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
|
|
|
|
missing file
|
|
|
|
$ hg ann nosuchfile
|
|
abort: nosuchfile: no such file in rev e9e6b4fa872f
|
|
[255]
|
|
|
|
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)
|
|
|
|
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
|
|
> from mercurial import node, util
|
|
> 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:
|
|
> raise util.Abort('copying is not supported')
|
|
> if fparent2 != node.nullid:
|
|
> changelist.append(fname)
|
|
> return flog.add(text, meta, tr, linkrev,
|
|
> fparent1, fparent2)
|
|
> raise util.Abort('only merging is supported')
|
|
> 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
|
|
|
|
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
|
|
$ sed 's/EOL$//g' > a <<EOF
|
|
> a a
|
|
>
|
|
> EOL
|
|
> 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
|
|
|
|
$ cd ..
|